基本上我希望能够做这样的事情

std::vector<int> myInts(3);
myInts.push_back(1);
myInts.push_back(2);
myInts.push_back(3);

从概念上讲,我希望 vector myInts只有3个空格,其值为{1、2、3}

显然,如果您在C++中运行上述代码,结果将为{0,0,0,1,2,3}

C++的主要目标之一是效率,但在我看来,在代码的第一行中,不必将0分配给初始化 vector 。

你怎么看?可以实现“用指定数量的单位化空间初始化 vector ”吗?

最佳答案

问题是您要使用三个0创建一个 vector ,然后再推回另外三个元素。要实例化具有值1、2和3的 vector ,可以执行以下操作:

std::vector<int> myInts{1,2,3};

另外,您可以实例化一个空 vector ,调用reserve以避免重新分配,然后推回值:
std::vector<int> myInts;
myInts.reserve(3);
myInts.push_back(1);
myInts.push_back(2);
myInts.push_back(3);

reserve的调用具有为三个元素分配足够空间的效果,而无需初始化任何元素。

07-27 19:56