【发布时间】:2021-09-15 09:43:26
【问题描述】:
vector<int> a;
for(int i=0;i<5;i++)
{
a[i]=i;
}
我是初学者,刚刚接触过 C++ 中的向量。我了解到,与数组不同,我们不必事先指定向量的大小。那么,为什么我不能这样做呢?
【问题讨论】:
vector<int> a;
for(int i=0;i<5;i++)
{
a[i]=i;
}
我是初学者,刚刚接触过 C++ 中的向量。我了解到,与数组不同,我们不必事先指定向量的大小。那么,为什么我不能这样做呢?
【问题讨论】:
我了解到,与数组不同,我们不必事先指定向量的大小。那么,为什么我不能这样做呢?
将向量的大小初始化为n。然后你可以像下面这样使用cin -
int n;
cin>>n;
vector<int> a(n);//Vector declared with size
for(int i=0;i<n;i++)
cin>>a[i];
这背后的原因是 - 向量的大小动态增长,如果你在编译时初始化它们的大小,你绝对可以cin 值。但是,如果您不在编译时初始化大小,那么要让向量了解要分配多少空间,您应该使用push_back。
当您没有在编译时使用 vector<int> a; 初始化大小 n 时,该位置没有值,因此您不能使用 [] 运算符,因为 [] 用于访问而不是调整大小。当您将其初始化为 vector<int> a(n); 时,这些值主要使用值 0 进行初始化,并且由于已初始化,您可以使用 [] 运算符。
进一步阅读 -
【讨论】:
[] 进行写作。您无法使用 [] 调整大小。
vector<int> a(n)初始化向量的大小为n。声明在 C++ 中完全是另一回事,定义是一种声明。 vector<int> a(n) 定义(并声明)a 的事实并不意味着声明或定义为 n 的大小。
是的,在某些情况下您不必指定矢量大小。
for(int i=0;i<5;i++)
{
a.push_back(i);
}
这增加了向量的大小,因为您不访问向量的元素目录,而是要求向尾部添加新元素,而向量类确实最适合您。
【讨论】: