首页 > 解决方案 > std::vector 的这种读取是如何工作的?

问题描述

我已经看到了这段代码,它应该以一种对我来说非常奇怪的方法读取向量。

我想知道是什么意思:

for(auto &it: a) cin >> it;

我已经知道这个 for 循环遍历整个向量,但部分:

auto &it

cin >> it;

让我困惑;因为,我习惯于使用push_back().

整个代码块:

int n;
cin >> n;
vector<int> a(n);
for (auto &it : a) cin >> it;

标签: c++vectoriterator

解决方案


你可能会被某人的糟糕命名所绊倒。itinfor(auto& it:a)不是迭代器,而是向量的一个元素。


一次一行地浏览程序

int n;

声明了一个新的 int 来存储向量的大小。

cin >> n

从用户处获取向量的大小。

vector<int> a(n);

声明一个大小为 的整数向量n。这条线使所有的整数。

for (auto& elm : a)

对于我们刚刚创建的每个 int,循环遍历它们,elm在循环体中命名每个 while。

cin >> elm;

从用户那里读入一个值,并将其值赋给向量中的当前元素。这里没有创建 int,因为它们已经存在,我们只是分配给它们。


推荐阅读