Вопросы с тегом «c++11»

86
Как проверить, работает ли все еще std :: thread?

Как я могу проверить, работает ли std::threadеще (независимо от платформы)? У него нет timed_join()метода, и joinable()он не предназначен для этого. Я думал заблокировать мьютекс с помощью a std::lock_guardв потоке и использовать try_lock()метод мьютекса, чтобы определить, заблокирован ли он...

86
Можно ли определить количество элементов класса перечисления c ++?

Можно ли определить количество элементов c ++ enum class: enum class Example { A, B, C, D, E }; Я пробовал использовать sizeof, но возвращает размер элемента перечисления. sizeof(Example); // Returns 4 (on my architecture) Есть ли стандартный способ получить мощность (5 в моем примере)?...

86
Почему константная функция-член может изменять статический член-данные?

В следующей C++программе изменение статического члена данных из constфункции работает нормально: class A { public: static int a; // static data member void set() const { a = 10; } }; Но изменение нестатического члена данных из constфункции не работает: class A { public: int a; // non-static data...

86
Понимание std :: atomic :: compare_exchange_weak () в C ++ 11

bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak()является одним из примитивов сравнения-обмена, представленных в C ++ 11. Он слабый в том смысле, что возвращает false, даже если значение объекта равно expected. Это происходит из-за ложного сбоя на некоторых...

86
Вводит ли ключевое слово volatile в C ++ забор памяти?

Я это понимаю volatile информирует компилятор о том, что значение может быть изменено, но должен ли компилятор для выполнения этой функции вводить забор памяти, чтобы заставить его работать? Насколько я понимаю, последовательность операций с изменчивыми объектами не может быть переупорядочена и...

86
Эффективность push_back () C ++ 11 с std :: move по сравнению с emplace_back () для уже построенных объектов

В C ++ 11, emplace_back()как правило, предпочтительнее (с точки зрения эффективности), push_back()поскольку он допускает создание на месте, но так ли это при использовании push_back(std::move())с уже созданным объектом? Например, что по- emplace_back()прежнему предпочтительнее в следующих случаях?...

85
Сужающие преобразования в C ++ 0x. Это только у меня, или это похоже на переломную ситуацию?

C ++ 0x сделает следующий код и аналогичный код некорректным, поскольку он требует так называемого сужающего преобразования a doubleв a int. int a[] = { 1.0 }; Мне интересно, часто ли этот вид инициализации используется в реальном коде. Сколько кода будет нарушено этим изменением? Сложно ли...

85
c ++ 0x: правильный способ получить лямбда в качестве параметра по ссылке

Как правильно определить функцию, которая получает int->intпараметр лямбда по ссылке? void f(std::function< int(int) >& lambda); или же void f(auto& lambda); Я не уверен, что последняя форма является допустимым синтаксисом. Есть ли другие способы определения лямбда-параметра?...

85
Кодировка Unicode для строковых литералов в C ++ 11

В ответ на связанный с этим вопрос я хотел бы задать вопрос о новых типах символьных и строковых литералов в C ++ 11. Кажется, что теперь у нас есть четыре вида символов и пять видов строковых литералов. Типы персонажей: char a = '\x30'; // character, no semantics wchar_t b = L'\xFFEF'; // wide...

85
Необходим итератор при использовании циклов for на основе диапазона

В настоящее время я могу делать только циклы на основе дальности с этим: for (auto& value : values) Но иногда мне нужен итератор для значения вместо ссылки (по какой-то причине). Есть ли какой-либо метод без необходимости проходить через весь вектор, сравнивая значения?...

85
C ++ 11 make_pair с указанными параметрами шаблона не компилируется

Я просто играл с g ++ 4.7 (один из более поздних снимков) с включенным -std = c ++ 11. Я пытался скомпилировать часть существующего кода, и один неудачный случай меня несколько смущает. Буду признателен, если кто-нибудь сможет объяснить, что происходит. Вот код: #include <utility> #include...

85
Как передать std :: unique_ptr?

У меня первая попытка использовать C ++ 11 unique_ptr; Я заменяю полиморфный необработанный указатель внутри своего проекта, который принадлежит одному классу, но передается довольно часто. Раньше у меня были такие функции, как: bool func(BaseClass* ptr, int other_arg) { bool val; // plain...

85
Как я могу одинаково отсортировать два вектора, используя критерий, который использует только один из векторов?

Как я могу одинаково отсортировать два вектора, используя критерий, который использует только один из векторов? Например, предположим, что у меня есть два вектора одинакового размера: vector<MyObject> vectorA; vector<int> vectorB; Затем я сортирую, vectorAиспользуя некоторую функцию...

84
Enum против строго типизированного перечисления

Я новичок в программировании на C ++. Сегодня наткнулся на новую тему: строго типизированный enum. Я немного исследовал это, но до сих пор не могу понять, зачем нам это нужно и что от этого нужно? Например, если у нас есть: enum xyz{a, b, c}; /*a = 0, b = 1, c = 2, (Typical C format)*/ Зачем нужно...

84
Является ли подписанное целочисленное переполнение неопределенным поведением в C ++?

Как известно, целочисленное переполнение со знаком - это неопределенное поведение . Но в cstdintдокументации по C ++ 11 есть кое-что интересное : целочисленный тип со знаком шириной ровно 8, 16, 32 и 64 бита соответственно без битов заполнения и с использованием дополнения до 2 для отрицательных...

84
Оператор if vs оператор if-else, что быстрее? [закрыто]

Закрыто . Этот вопрос должен быть более конкретным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, отредактировав этот пост . Закрыт 3 года назад . Уточните этот вопрос На днях я спорил с другом по поводу...

83
Как объявить функцию, принимающую лямбду?

Я прочитал в Интернете множество руководств, в которых объяснялось, как использовать лямбды со стандартной библиотекой (например, std::find ), и все они были очень интересными, но я не мог найти ни одного, объясняющего, как я могу использовать лямбда-выражения для моих собственных функций....