Вопросы с тегом 'move-semantics'

Перемещение семантики - это функция языка программирования, которая позволяет заменять операцию копирования более эффективным "перемещением", когда исходный объект является временным или иначе истекающим объектом.
11

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

Я только что закончил слушать радио- интервью подкаста Software Engineering со Скоттом Мейерсом о С++ 0x. Большинство новых функций имело смысл для меня, и сейчас я на самом деле рад С++ 0x, за исключением одного. Я до сих пор не понимаю семантику п...
23 июн. '10 в 22:46
7

push_back vs 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...
29 нояб. '10 в 12:04
6

Что такое std:: move(), и когда он должен использоваться?

Что это такое? Что он делает? Когда он должен использоваться? Хорошие ссылки приветствуются.
05 авг. '10 в 9:42
5

С++ 11 rvalues ​​и перемещение семантики путаницы (return statement)

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

Что такое "rvalue reference для * this"?

Перешел в предложение под названием "rvalue reference for * this" на странице состояния С++ 11. Я немного прочитал ссылки на rvalue и понял их, но я не думаю, что знаю об этом. Я также не мог найти много ресурсов в Интернете, используя термины. Там...
22 дек. '11 в 22:47
2

Может ли современный С++ получить вам производительность бесплатно?

Иногда утверждается, что С++ 11/14 может повысить производительность даже при компиляции кода на С++ 98. Обоснование обычно выполняется в соответствии с семантикой перемещения, так как в некоторых случаях конструкторы rvalue автоматически генерируютс...
22 дек. '14 в 1:03
2

Что я могу сделать с перемещенным объектом?

Определяет ли стандарт то, что я могу сделать с объектом после его перемещения? Я думал, что все, что вы можете сделать с перемещенным объектом, уничтожает его, но этого будет недостаточно. Например, возьмите шаблон функции swap, как определено в с...
11 авг. '11 в 14:19
4

Когда нужно сделать тип, не перемещаемый в С++ 11?

Я был удивлен, что это не появилось в моих результатах поиска, я думал, что кто-то спросил об этом раньше, учитывая полезность семантики перемещения в С++ 11: Когда мне нужно (или это хорошая идея для меня) сделать класс не движимым в С++ 11? (При...
13 янв. '13 в 11:05
1

Невозможно выйти из заимствованного контента/не может выйти за общую ссылку

Я не понимаю ошибку cannot move out of borrowed content. Я получал это много раз и всегда решал, но никогда не понимал почему. Например: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in line.into_bytes().iter() ...
26 янв. '15 в 21:04
2

Почему `std:: move` называется` std:: move`?

Функция С++ 11 std::move(x) вообще ничего не движет. Это просто приведение к значению r. Почему это было сделано? Разве это не вводит в заблуждение?
26 янв. '14 в 1:17
6

Переместить оператор присваивания и `if (this!= & Rhs)`

В операторе присваивания класса вам обычно нужно проверить, является ли объект, назначаемый для вызова, вызывающим объектом, поэтому вы не заблуждаетесь: Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do t...
17 февр. '12 в 2:41
6

Когда следует использовать std:: move для возвращаемого значения функции?

В этом случае struct Foo {}; Foo meh() { return std::move(Foo()); } Я уверен, что этот шаг не нужен, потому что созданный Foo будет значением xvalue. Но что в подобных случаях? struct Foo {}; Foo meh() { Foo foo; //do something, but knowi...
13 февр. '13 в 14:55
3

В чем преимущество использования ссылок пересылки в циклах для диапазонов?

const auto& будет достаточно, если я хочу выполнять операции только для чтения. Тем не менее, я столкнулся с for (auto&& e : v) // v is non-const пару раз недавно. Это заставляет меня задуматься: Возможно ли, что в некоторых непонятн...
29 окт. '12 в 22:40
4

Почему мы копируем, а затем двигаемся?

Я видел код где-то, где кто-то решил скопировать объект, а затем переместить его в член данных класса. Это оставило меня в замешательстве в том, что я думал, что все дело в том, чтобы избежать копирования. Вот пример: struct S { S(std::string st...
23 мая '13 в 22:03
6

Как использовать пользовательский удаленный элемент с элементом std:: unique_ptr?

У меня есть класс с элементом unique_ptr. class Foo { private: std::unique_ptr<Bar> bar; ... }; Панель является сторонним классом, который имеет функцию create() и функцию destroy(). Если бы я хотел использовать std::unique_ptr с н...
27 сент. '13 в 14:31