ala*_*ere -1 c++ performance stdvector
存在此C++对象的两个实例.
my_type
{
public:
std::vector<unsigned short> a;
}
Run Code Online (Sandbox Code Playgroud)
std :: vector为空,另一个包含50个元素.
哪个实例复制最快或者同时复制?
Dar*_*rda 10
当std::vector复制a时,它的所有元素也被复制 - 因此所用的时间应该与之成比例vector.size().
在c++0x所谓的移动语义中引入,允许为类型定义移动构造函数和移动赋值运算符.这些是为标准库容器(例如std::vector)定义的,应该允许向量移动O(1).如果您担心性能,也许您可以重新投射操作以利用这些新功能.
编辑:根据链接的问题,如果您担心在调用时可能vector::push_back会有额外的副本,您有几个选项:
c++0x使用新的vector::emplace_back而不是.这允许您的对象在容器中就地构造.c++0x使用移动语义,通过类似的东西vector.push_back(std::move(object_to_push)).对于POD类型,这仍然会比emplace_back选项进行更多的复制.希望这可以帮助.