我有一个vector<T, alloc>地方alloc是一个简单的包装器,std::allocator<T>它执行一些额外的簿记,比如计算创建的对象的数量等.
现在我想从我vector<T, alloc>进入vector<T>.没有向量移动函数似乎接受vector具有不同分配器的s.
如何在分配器不相同的情况下将数据从一个向量移动到另一个向量?
正如约翰·兹温克(John Zwinck)在他的回答中解释的那样,你不能移动向量。但是,您可以按如下方式移动向量的元素:
vector<...> u;
...
vector<...> v(
std::make_move_iterator(u.begin()),
std::make_move_iterator(u.end())
);
Run Code Online (Sandbox Code Playgroud)
或者
vector<...> u;
vector<...> v;
...
v.insert(
v.end(),
std::make_move_iterator(u.begin()),
std::make_move_iterator(u.end())
);
Run Code Online (Sandbox Code Playgroud)
或(Oktalist 建议)
vector<...> u;
vector<...> v;
...
std::move(u.begin(), u.end(), std::back_inserter(v));
Run Code Online (Sandbox Code Playgroud)