这是一个非常直接的问题。有没有办法在不构造然后复制它的情况下拥有一个向量并初始化一个元素?
class BigType
{
// has a costly copy constructor
};
int main(void)
{
using std::vector;
vector<BigType> bigTypeVec;
bigTypeVec.push_back(BigType(/*constructor from parameters*/));
// This constructs a temp object, and then copies it to the new element.
}
当然,有各种涉及指针向量的工作循环,或者不使用构造函数,而是使用 set 函数初始化元素的组件,但是我想知道是否有办法做到这一点,以便它可以调用它在 push_back 期间分配的元素上的构造函数。
编辑:这个问题被标记为重复,但是我查看了该页面并且他的问题的答案没有回答我的问题。我想知道如何通过构造一次来设置元素的值,而不是复制构造一个临时对象到元素中。Emplace 是一个很好的方法。