Я хотел бы обменять в std::vector
как параметр функции, так что вектор не нужно копировать.Swap std :: vector as function parameter
Что-то вроде этого:
function(std::vector<MyType>().swap(my_vector));
Или в моем случае, как это:
std::make_pair(0, std::vector<MyType>().swap(my_vector));
Но конечно std::vector::swap
возвращает пустоту, не созданный вектор.
Есть ли способ сделать это?
Почему вы не используете ссылку? – perreal
@perreal Потому что у меня нет контроля над функцией. ('std :: make_pair') –
@Jay: если функция копирует свой аргумент и вы не можете изменить функцию, невозможно заставить функцию не копировать свой аргумент. (Конечно, в случае 'std :: make_pair' есть версия, которая принимает свои параметры по ссылке rvalue и которая переводит их в конструктор' pair', тем самым перемещая аргумент, а не копируя его (если аргумент rvalue reference)) – Mankarse