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

Используйте этот тег для кода, который должен компилироваться как C ++ 11 (без использования каких-либо функций, представленных в C ++ 14 или более поздних версиях).

14
Рекурсивные лямбда-функции в C ++ 11
Я новичок в C ++ 11. Я пишу следующую рекурсивную лямбда-функцию, но она не компилируется. sum.cpp #include <iostream> #include <functional> auto term = [](int a)->int { return a*a; }; auto next = [](int a)->int { return ++a; }; auto sum = [term,next,&sum](int a, int b)mutable ->int { if(a>b) return 0; …
155 c++  c++11  lambda 

12
Зачем кому-то использовать set вместо unordered_set?
Представляем C ++ 0x, unordered_setкоторый доступен во boostмногих других местах. Я понимаю, что unordered_setэто хеш-таблица со O(1)сложностью поиска. С другой стороны, setэто не что иное, как дерево со log(n)сложностью поиска. Зачем кому-то использовать setвместо unordered_set? т.е. есть ли необходимость в этом set?

8
Оптимизация «время (1);» в C ++ 0x
Обновлено, смотрите ниже! Я слышал и читал, что C ++ 0x позволяет компилятору напечатать «Hello» для следующего фрагмента #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } По-видимому, это как-то связано с потоками и возможностями оптимизации. Мне кажется, что это может удивить многих людей, хотя. У …

7
Разумно ли заменить boost :: thread и boost :: mutex на c ++ 11 эквивалентов?
Мотивация: причина, по которой я рассматриваю это, заключается в том, что мой гениальный руководитель проекта считает, что повышение - это еще одна зависимость, и это ужасно, потому что «вы зависите от этого» (я попытался объяснить качество повышения, а затем через некоторое время сдался :( Меньшая причина, по которой я хотел …

6
Что происходит с отдельным потоком при выходе из main ()?
Предположим, я запускаю a, std::threadа затем detach()it, поэтому поток продолжает выполняться, даже если тот, std::threadкоторый когда-то представлял его, выходит из области видимости. Предположим далее, что программа не имеет надежного протокола для присоединения к отсоединенному потоку 1 , поэтому отсоединенный поток по-прежнему работает при main()выходе. Я не могу найти ничего в …

5
Что означает йота из std :: йота?
Я предполагаю, что «i» - это приращение, а «a» - это присваивание, но я не мог понять или найти ответ. Кроме того, он очень похож на нестандартный, itoaчто, на мой взгляд, сбивает с толку.

7
Ключевое слово C ++ auto. Почему это волшебство?
Из всего материала, который я использовал для изучения C ++, autoвсегда был странный спецификатор продолжительности хранения, который не служил никакой цели. Но совсем недавно я столкнулся с кодом, который использовал его как имя типа само по себе. Я из любопытства попробовал, и он предполагает тот тип, который я ему назначил! …
151 c++  types  c++11  auto 

6
Зачем мне std :: переместить std :: shared_ptr?
Я просматривал исходный код Clang и нашел этот фрагмент: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Зачем мне std::moveэто std::shared_ptr? Есть ли смысл передавать право собственности на общий ресурс? Почему бы мне просто не сделать это вместо этого? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = Value; }

1
Что произойдет, если вы укажете static_cast недопустимое значение для перечисления класса?
Рассмотрим этот код C ++ 11: enum class Color : char { red = 0x1, yellow = 0x2 } // ... char *data = ReadFile(); Color color = static_cast<Color>(data[0]); Предположим, что data [0] на самом деле 100. Какой цвет установлен в соответствии со стандартом? В частности, если я позже сделаю …
146 c++  c++11 

10
Какова цель ключевого слова final в C ++ 11 для функций?
Какова цель finalключевого слова в C ++ 11 для функций? Я понимаю, что это предотвращает переопределение функций производными классами, но если это так, то разве недостаточно объявить ваши finalфункции не виртуальными ? Есть еще кое-что, что мне здесь не хватает?
146 c++  c++11  final 

4
Использование переменной-члена в лямбда-списке захвата внутри функции-члена
Следующий код компилируется с gcc 4.5.1, но не с VS2010 SP1: #include <iostream> #include <vector> #include <map> #include <utility> #include <set> #include <algorithm> using namespace std; class puzzle { vector<vector<int>> grid; map<int,set<int>> groups; public: int member_function(); }; int puzzle::member_function() { int i; for_each(groups.cbegin(),groups.cend(),[grid,&i](pair<int,set<int>> group){ i++; cout<<i<<endl; }); } int main() …

1
Какая логика стоит за ключевым словом «using» в C ++?
Какая логика стоит за ключевым словом «using» в C ++? Он используется в разных ситуациях, и я пытаюсь выяснить, есть ли у них что-то общее, и есть причина, по которой ключевое слово «using» используется как таковое. using namespace std; // to import namespace in the current namespace using T = …
145 c++  c++11 

14
Есть ли обратная сторона в объявлении переменных с auto в C ++?
Похоже, что это autoбыла довольно значительная особенность, которая должна быть добавлена ​​в C ++ 11, которая, кажется, следует за многими новыми языками. Как и в языке, подобном Python, я не видел явного объявления переменных (я не уверен, возможно ли это с использованием стандартов Python). Есть ли недостаток в использовании autoдля …

4
Является ли передача по значению разумным значением по умолчанию в C ++ 11?
В традиционном C ++ передача по значению в функции и методы является медленной для больших объектов и обычно не одобряется. Вместо этого программисты на C ++ стремятся передавать ссылки, что быстрее, но при этом возникает множество сложных вопросов, касающихся владения и особенно управления памятью (в случае, если объект выделен в …
142 c++  coding-style  c++11 

6
Какого типа лямбда-выражения выводятся с помощью «auto» в C ++ 11?
У меня было ощущение, что тип лямбда - это указатель на функцию. Когда я выполнил следующий тест, я обнаружил, что это неправильно ( демо ). #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; …
142 c++  lambda  c++11  typeof  auto 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.