繁体   English   中英

push_back() 后向量大小发生变化

[英]vector size changes after push_back()

我不确定为什么下面的vector<string> (10).size() () 在.push_back(string)之后从 10 变为 20。 我认为它应该保持不变。

int main() {

   vector<string> StrVec(10);
   vector<int>     intVec(10);
   iota(intVec.begin(), intVec.end(), 1);

   cout << "StrVec.length = " << StrVec.size() << endl;

   for (int i : intVec)
   {
       StrVec.push_back(to_string(i));
   }

   cout << "StrVec.length = " << StrVec.size() << endl;

   return 0;
}

输出:

StrVec.length = 10
StrVec.length = 20

当你写vector<string> StrVec(10); ,它用 10 个默认初始化的string元素初始化StrVec 然后,每个push_back()在迭代StrVec时将一个新元素推送到intVec ,从而达到 20 个元素。

如果您只想预先分配内存(但没有任何元素),您可以考虑使用它来代替:

vector<string> StrVec;
StrVec.reserve(10);

如果您想访问已分配向量的元素,您可以使用StrVec[i] ,其中i是索引。 请注意,您可能不会索引超出向量的末尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM