c++ - 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;
解决方案
你可能会被某人的糟糕命名所绊倒。it
infor(auto& it:a)
不是迭代器,而是向量的一个元素。
一次一行地浏览程序
int n;
声明了一个新的 int 来存储向量的大小。
cin >> n
从用户处获取向量的大小。
vector<int> a(n);
声明一个大小为 的整数向量n
。这条线使所有的整数。
for (auto& elm : a)
对于我们刚刚创建的每个 int,循环遍历它们,elm
在循环体中命名每个 while。
cin >> elm;
从用户那里读入一个值,并将其值赋给向量中的当前元素。这里没有创建 int,因为它们已经存在,我们只是分配给它们。
推荐阅读
- css - 自定义样式的组件在 flex wrap 中的行为不像 div
- c++ - 颤振:即使 shouldRepaint() 返回 true,自定义画家也不会重新绘制
- tensorflow - tensorflow/keras中的for循环
- javascript - 如何实现 Javascript 单例来缓存 mongo 集合?
- keras - 为什么我在运行 anaconda 提示符时会得到如此奇怪的代码行?
- reactjs - 如何在反应路由器中根据某些条件路由页面
- java - 在java中使用标准输入法打印地图:避免未使用局部变量的警告
- docker - 如何配置 gitlab ci 以使用 docker:dind-rootless 进行 docker build?
- sql-server - 各部门工资第三高
- nginx - Nginx 无法将自定义标头传递给代理