【发布时间】:2017-08-19 10:33:17
【问题描述】:
当我们移动std::vector 时,我们只是窃取了它的内容。所以这段代码:
std::vector<MyClass> v{ std::move(tmpVec) };
不会分配新内存,不会调用MyClass的任何构造函数。
但是如果我想拆分一个临时向量怎么办?理论上,我可以像以前一样窃取内容并将其分发到新的向量中。在实践中我不能这样做。迄今为止我发现的最好的解决方案是使用来自<algorithm> 标头的std::move()。但是这里每个新向量都会调用operator new。此外,将为我们移动的每个元素调用移动构造函数(如果可用)。
我还能做什么(c++17 计数)?
【问题讨论】:
标签: c++11 move move-semantics