【发布时间】:2009-12-14 19:03:39
【问题描述】:
当从std::vector调用方法push_back时,它的大小加一,意味着创建一个新实例,然后你传递的参数将被复制到这个最近创建的元素中,对吧?示例:
myVector.push_back(MyVectorElement());
那么,如果我想简单地使用元素的默认值来增加向量的大小,那么使用resize 方法不是更好吗?我的意思是这样的:
myVector.resize(myVector.size() + 1);
据我所知,这将完成完全相同的事情,但会避免元素属性的完全不必要的分配副本。
这个推理是正确的还是我遗漏了什么?
【问题讨论】:
-
如果你拼写出来,为什么还要使用首字母缩略词? :P
-
能够在以后的问题中使用它,而不必再次拼写出来...... ;)
-
问这个问题时,我想知道推理是否正确。当使用带有创建成本高的元素的向量时,我确实使用 Boost 智能指针指向实际实例...
-
似乎大多数答案早于 c++11,它有
vector::emplace_back。我打算添加一个 C++98 标记,但后来我意识到有一个答案是指emplace_back....