当我们在C ++中输入数组时,为什么我们不能输入向量?

时间:2014-12-10 14:44:21

标签: c++ vector stl

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

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

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

3 个答案:

答案 0 :(得分:4)

您需要预先调整向量的大小 - 正如其他答案所说 - 或者您可以使用C ++标准库。然后,您的for循环的等价物是以下一行:

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

它负责分配/调整大小。

答案 1 :(得分:3)

问题是你需要先分配向量的元素。所以试试vector<int> v(4);,所以它将从4个元素开始。然后你可以加载值。

答案 2 :(得分:3)

你的矢量现在没有元素。尝试将其分配为:

vector<int> v(5);

然后你的方法就可以了。