Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我们不能输入向量,因为我们输入一个数组在C++中?_C++_Vector_Stl - Fatal编程技术网

为什么我们不能输入向量,因为我们输入一个数组在C++中?

为什么我们不能输入向量,因为我们输入一个数组在C++中?,c++,vector,stl,C++,Vector,Stl,维基上说: 向量的元素是连续存储的。和 向量允许随机访问;也就是说,向量的元素可以通过数组索引以与数组元素相同的方式被引用 那么为什么我们不能将向量的元素输入为: vector<int> v; for(int i=0;i<3;i++) { cin>>v[i]; } 问题是您需要首先分配向量的元素。那么试试向量v4;,因此,它将从4个元素开始。然后您可以将值加载到它们中。您的向量现在有零个元素。尝试为其分配一些空间,如下所示: vector<int&g

维基上说: 向量的元素是连续存储的。和 向量允许随机访问;也就是说,向量的元素可以通过数组索引以与数组元素相同的方式被引用

那么为什么我们不能将向量的元素输入为:

vector<int> v;
for(int i=0;i<3;i++)
{
    cin>>v[i];
}

问题是您需要首先分配向量的元素。那么试试向量v4;,因此,它将从4个元素开始。然后您可以将值加载到它们中。

您的向量现在有零个元素。尝试为其分配一些空间,如下所示:

vector<int> v(5);

你的方法会起作用。

< P>你需要调整向量的前面-就像其他答案一样,或者你可以使用C++标准库。然后,for循环的等效项是以下一行:

copy_n(istream_iterator<int>(cin), 3, back_inserter(v));

它负责分配/调整大小。

如果给向量一个大小,则是。否则它以0个元素开始。如果有固定的大小,可以使用std::array。但是push_back有什么问题吗?@crashmstr鉴于这里有很多关于它的问题,我想补充一点,如果你有一个固定的大小,并且这个大小可以放在堆栈上,那么你可以使用std::array。