我正在开发一个使用向量的程序。首先要做的是声明向量。
std::vector<double> x;
x.reserve(10)
顺便问一下,这样做也算是不好的做法吗?我应该只是输入 std::vector<double> x(10)
吗?
然后我开始给向量赋值,并询问它的大小。
for (int i=0; i<10; i++)
{
x[i]=7.1;
}
std::cout<<x.size()<<std::endl;
我不知道它会返回0,所以经过一些搜索,我发现需要使用push_back方法而不是索引运算符。
for (int i=0; i<10; i++)
{
x.push_back(7.1);
}
std::cout<<x.size()<<std::endl;
现在它返回10
。
所以我想知道的是为什么索引运算符让我可以访问向量x
中给定索引处“存储”的值,但不会改变其大小。此外,为什么这样做是不好的实践?
vector::at()
,如果超出范围,它将抛出异常。 - The Quantum Physiciststd::vector<double> x(10, 7.1);
。 - Bo Persson