В C ++ 11 мы можем повысить эффективность, используя std::move
, когда мы хотим переместить (разрушительно скопировать) значения в контейнер:
SomeExpensiveType x = /* ... */;
vec.push_back(std::move(x));
Но я не могу найти что-то идущее в другую сторону. Я имею в виду что-то вроде этого:
SomeExpensiveType x = vec.back(); // copy!
vec.pop_back(); // argh
Это более часто (всплывающее окно) на адаптере, как stack
. Может ли что-то подобное существовать:
SomeExpensiveType x = vec.move_back(); // move and pop
Чтобы избежать копирования? И это уже существует? Я не мог найти ничего подобного в n3000.
У меня такое чувство, что я упускаю что-то мучительно очевидное (например, ненужность этого), поэтому я готов к "ru dum" : 3