存在此C ++对象的两个实例。
my_type
{
public:
std::vector<unsigned short> a;
}
std :: vector为空,另一个包含50个元素。
哪个实例最快复制或者同时复制?
答案 0 :(得分:10)
复制std::vector
时,所有元素也会被复制 - 因此所用时间应与vector.size()
成比例。
在c++0x
中引入了所谓的 move 语义,允许为类型定义移动构造函数和移动赋值运算符。这些是为标准库容器(例如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
选项进行更多复制。希望这有帮助。