Если у меня есть std::deque
и std::vector
и хотите объединить их std::deque
, я могу сделать это следующим образом:Move станд :: вектор к StD :: Deque в C++ 11
typedef int T; // type int will serve just for illustration
std::deque<T> deq(100); // just some random size here
std::vector<T> vec(50);
// ... doing some filling ...
// now moving vector to the end of queue:
deq.insert(
deq.end(),
std::make_move_iterator(vec.begin()),
std::make_move_iterator(vec.end())
);
std::cout << deq.size() << std::endl;
Мы знаем, размер вектора, но мы не можем зарезервировать память в конце std::deque
перед использованием std::deque.insert(...)
. Так это самый быстрый способ переместить все элементы std::vector
в конец std::deque
? Или я что-то пропустил?
спасибо.
Когда вы говорите «перемещение», я думаю: «Возьмите элементы из вектора и поместите их в детекс». Что вы показали, все же оставляет перемещенные элементы, присутствующие в векторе. –
Является ли тип T, для которого перемещение должно быть дешевле, чем копирование? Для ints не имеет значения – MikeMB