c++ - 为什么我在使用 for 循环和 cout 命令时没有打印出 vector

标签 c++ for-loop vector cout

我似乎找不到使用 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/

相关文章:

c++ - 为什么程序在 C++ 中迭代空 vector 时会抛出运行时错误

c++ for循环优化问题

c++ - 矩阵中字符的随机移动

c++ - 在Qml中使用QQmlListProperty显示和修改QList

javascript - 我的 javascript for 循环不工作

javascript - 如何在ajax成功方法中获取数组值?

c++ - 超出范围的 vector 下标 C++

C++ 数组操作(类似 python 的操作)

javascript - 带 for 语句的空表单

c++ - 遍历另一个类中包含的 vector