KKK*_*oo0 1 c++ initialization vector
基本上我希望能够做这样的事情
std::vector<int> myInts(3);
myInts.push_back(1);
myInts.push_back(2);
myInts.push_back(3);
Run Code Online (Sandbox Code Playgroud)
从概念上讲,我希望向量myInts只有3个空格,其值为{1,2,3}
显然,如果在C++中运行上面的代码,结果将是{0,0,0,1,2,3}
C++的主要目标之一是效率,但在我看来,在第一行代码中,不需要为初始化向量赋值0.
你怎么看?是"可以实现具有指定数量的单位化空间的初始化"吗?
问题是你正在创建一个带有三个向量的向量0,然后再推回另外三个元素.要实例化值为1,2和3的向量,可以执行以下操作:
std::vector<int> myInts{1,2,3};
Run Code Online (Sandbox Code Playgroud)
或者,您可以实例化一个空向量,调用reserve以避免重新分配,然后回推值:
std::vector<int> myInts;
myInts.reserve(3);
myInts.push_back(1);
myInts.push_back(2);
myInts.push_back(3);
Run Code Online (Sandbox Code Playgroud)
调用reserve具有为三个元素分配足够空间的效果,而无需初始化任何元素.