存在这个C++对象的两个实例。哪个C++对象更快地复制?
my_type
{
public:
std::vector<unsigned short> a;
}
其中std :: vector为空而另一个包含50个元素的地方。
哪个实例复制速度最快或者它们在同一时间复制?
存在这个C++对象的两个实例。哪个C++对象更快地复制?
my_type
{
public:
std::vector<unsigned short> a;
}
其中std :: vector为空而另一个包含50个元素的地方。
哪个实例复制速度最快或者它们在同一时间复制?
当std::vector
被复制时,它的所有元素也被复制 - 所花费的时间应与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
选项复制更多。希望这会有所帮助。
是的,它能让人耳目一新,看到一个好的,直接的答案,甚至更快地看到一个答案:¬) – alan2here
我在澄清中进行了编辑。 – alan2here
我甚至无法想象为什么这个问题的答案不应该很明显。 – Jon
试图打破这种问题得到一个体面的答案http://stackoverflow.com/questions/7457747/before-or-after-when-adding-to-sets-in-c/7457955#7457955 – alan2here