【问题标题】:How this reading of std::vector works?std::vector 的这种读取是如何工作的?
【发布时间】:2020-05-19 17:14:24
【问题描述】:

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

我想知道是什么意思:

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;

【问题讨论】:

  • it 这个名字有误导性,因为它不是一个迭代器。
  • 您缺少的东西是,有问题的 for 循环正在对已经确定大小的向量进行操作,并为向量中已经存在的每个元素读取一个输入。

标签: c++ vector iterator


【解决方案1】:

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


一行一行地浏览程序

int n;

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

cin >> n

从用户那里获取向量的大小。

vector<int> a(n);

声明一个大小为n 的整数向量。此行生成所有整数。

for (auto& elm : a)

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

cin >> elm;

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

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 2016-05-14
    • 2019-10-12
    • 2021-05-17
    • 1970-01-01
    • 2020-11-19
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多