我有boost::array<int,8> array1
,我有std::vector<int> temp(8);
我如何执行std::move()
从boost::array
到std::vector
,我想避免memcpy()
.
你不能只是将容器的内脏移动到一个std::vector
. std::vector
没有提供获取缓冲区所有权的方法.您必须将各个元素复制/移动到std::vector
.
你可以做的一件事是使用它的迭代器构造函数将各个元素移动到向量中std::make_move_iterator
.你不会看到任何好处,int
但如果类型移动比复制更快,那么你会.那看起来像
some_container foo;
// populate foo
std::vector<some_type> moved_into{std::make_move_iterator(std::begin(foo)),
std::make_move_iterator(std::end(foo))};
Run Code Online (Sandbox Code Playgroud)
boost::array
并且std::vector
是不相关的类型,std::vector
对于如何构建而言一无所知boost::array
.
另一方面,您可以使用std::move
迭代器:
boost::array<int, 8> a;
std::vector<int> v;
v.reserve(a.size());
std::move(a.begin(), a.end(), std::back_inserter(v));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
102 次 |
最近记录: |