我似乎找不到使用 for 循环和 cout 不提供 vector 组件内容的原因。代码的背景是我想知道当你调整一个已经存在的 vector 大小时会发生什么(如果变得更小,哪些组件会消失,如果更大,哪些组件会被添加,......)
#include <iostream>
#include <vector>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
vector<double> a;
for (int i = 1; i < 10; ++i)
a[i] = 5;
a.resize(15)
for (int i = 1; i < a.size(); ++i)
cout << a[i] << endl;
return 0;
}
最佳答案
该程序具有未定义的行为,因为声明的 vector 为空,您不能对空 vector 使用下标运算符。
vector<double> a;
for (int i = 1; i < 10; ++i)
a[i] = 5;
此外, vector 的索引从 0 开始。
你可以写
vector<double> a( 10 );
for (int i = 0; i < 10; ++i)
a[i] = 5;
或
vector<double> a;
for ( int i = 0; i < 10; ++i)
a.push_back( 5 );
或者为了使最后的代码片段更高效,您可以编写
vector<double> a;
a.reserve( 10 );
for ( int i = 0; i < 10; ++i)
a.push_back( 5 );
再次要输出 vector 的全部内容,您应该从 0 开始索引。或者您可以使用基于范围的 for 循环,例如
for ( const auto &item : a ) std::cout << item << '\';
关于c++ - 为什么我在使用 for 循环和 cout 命令时没有打印出 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59007896/