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

1894
C ++ 11 представил стандартизированную модель памяти. Что это значит? И как это повлияет на программирование на C ++?

C ++ 11 представил стандартизированную модель памяти, но что именно это означает? И как это повлияет на программирование на C ++? В этой статье ( Гэвин Кларк, которая цитирует Херба Саттера ) говорится, что Модель памяти означает, что код C ++ теперь имеет стандартизированную библиотеку для вызова...

1706
Что такое семантика перемещения?

Я только что закончил слушать радио- интервью подкаста Software Engineering со Скоттом Мейерсом о C ++ 0x . Большинство новых функций имело смысл для меня, и сейчас я на самом деле рад C ++ 0x, за исключением одного. Я до сих пор не понимаю семантику перемещения ... Что это...

1603
Почему я должен использовать указатель, а не сам объект?

Я пришел из Java-фона и начал работать с объектами в C ++. Но одна вещь, которая пришла мне в голову, это то, что люди часто используют указатели на объекты, а не на сами объекты, например, это объявление: Object *myObject = new Object; скорее, чем: Object myObject; Или вместо использования...

1488
Что такое лямбда-выражение в C ++ 11?

Что такое лямбда-выражение в C ++ 11? Когда я буду использовать один? Какой класс проблемы они решают, что было невозможно до их введения? Несколько примеров и вариантов использования будут полезны....

1357
Что такое rvalues, lvalues, xvalues, glvalues ​​и prvalues?

В C ++ 03 выражение является либо значением r, либо значением l . В C ++ 11 выражение может быть: Rvalue именующий xvalue glvalue prvalue Две категории стали пятью категориями. Каковы эти новые категории выражений? Как эти новые категории связаны с существующими категориями rvalue и lvalue?...

905
В чем разница между typedef и using в C ++ 11?

Я знаю, что в C ++ 11 теперь мы можем использовать usingдля записи псевдоним типа, например, typedefs: typedef int MyInt; Насколько я понимаю, эквивалентно: using MyInt = int; И этот новый синтаксис возник в результате попытки выразить " template typedef": template< class T > using MyType =...

801
Что означает T && (двойной амперсанд) в C ++ 11?

Я изучил некоторые из новых функций C ++ 11, и одна из них я заметил, это двойной амперсанд при объявлении переменных, например T&& var. Для начала, как зовут этого зверя? Я бы хотел, чтобы Google позволил нам искать такие знаки препинания, как этот. Что именно это значит? На первый взгляд,...

763
push_back против emplace_back

Я немного сбит с толку относительно разницы между push_backи emplace_back. void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); Поскольку существует push_backперегрузка, принимающая ссылку на rvalue, я не совсем понимаю, для чего это...

604
Дни передачи const std :: string & в качестве параметра истекли?

Я слышал недавний разговор Херба Саттера, который предположил, что причины для прохождения std::vectorи std::stringпо const &большей части исчезли. Он предположил, что написание функции, такой как следующее, теперь предпочтительнее: std::string do_something ( std::string inval ) { std::string...

570
Что именно является nullptr?

Теперь у нас есть C ++ 11 со многими новыми функциями. Интересным и запутанным (по крайней мере для меня) является новое nullptr. Ну, не надо больше для мерзкого макроса NULL. int* x = nullptr; myclass* obj = nullptr; Тем не менее, я не понимаю, как nullptrработает. Например, статья в Википедии...

543
Правила аннулирования итераторов

Каковы правила аннулирования итераторов для контейнеров C ++? Желательно в формате сводного списка. (Примечание. Предполагается, что это будет вход в FAQ по C ++ в Stack Overflow . Если вы хотите критиковать идею предоставления FAQ в этой форме, то публикация в meta, с которой все это началось,...

509
Когда я должен действительно использовать noexcept?

noexceptКлючевое слово может быть соответствующим образом применено ко многим сигнатуры функций, но я не уверен , о том , когда следует рассмотреть возможность использования его на практике. Основываясь на том, что я прочитал, добавление в последнюю минуту, noexceptкажется, решает некоторые важные...

438
Каковы основные цели использования std :: forward и какие проблемы он решает?

При совершенной пересылке std::forwardиспользуется для преобразования именованных ссылок rvalue t1и t2в безымянные ссылки rvalue. Какова цель сделать это? Как это повлияет на вызываемую функцию, innerесли мы оставим t1& t2как значения? template <typename T1, typename T2> void...

435
C ++ 11 значения и путаница в семантике перемещения (оператор return)

Я пытаюсь понять rvalue ссылки и переместить семантику C ++ 11. В чем разница между этими примерами, и какой из них не будет делать векторные копии? Первый пример std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int>...

400
Как передать аргумент unique_ptr конструктору или функции?

Я новичок в перемещении семантики в C ++ 11, и я не очень хорошо знаю, как обрабатывать unique_ptrпараметры в конструкторах или функциях. Рассмотрим этот класс, ссылающийся на себя: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr...