我创建了一个类型为int的向量,并为该向量显式声明了3的大小。假设for循环一直循环到x等于或大于3。不幸的是,for循环一直运行第3遍。有人能详细说明为什么会发生这种情况吗?我要刺一下,说是“ u.size”造成了问题,但是如果我为向量声明了一个大小,那会是为什么呢?
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> u (3);
for(size_t x = 0; x < u.size();x++)
{
int g = x;
u.push_back(g);
}
}
push_back
在向量的末尾附加一个元素,因此其大小会不断扩大。for
循环的退出条件在每次迭代时进行评估,因此循环永远不会终止,因为向量在每次迭代时增长1个元素。
您可以这样做:
vector<int> u;
for(int i=0; i<3; ++i)
u.push_back(i);
允许向量自行扩展,或者从头开始创建正确大小的向量,然后将元素存储在其相应位置:
vector<int> u(3);
for(size_t i=0; i<u.size(); ++i)
u[i]=i;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句