c++ - 基于 C++ 范围的 for 循环
问题描述
尝试使用基于范围的 for 循环做某事。可以使用这样的常规 for 循环来完成:
vector<double> sensorReadings(3);
sensorReadings = {0,0,0};
for (int i = 0; i < sensorReadings.size();i++)
{
sensorReadings[i] += i + 100 ;
}
我想将向量的第一个元素设置为 n(在本例中为 100),并将所有其他元素设置为 n+1。在这种情况下,在上述循环运行之后,向量是 100,101,102,根据需要。我的问题是使用范围基循环执行此操作总是将所有元素设置为相同的值。如何将上述循环变成基于范围的 for 循环?我的尝试如下:
vector<double> sensorReadings(3);
sensorReadings = {0,0,0};
for(double &sensorVal: sensorReadings)
{
double y = 100;
sensorVal = y;
y++;
}
for (double i: sensorReadings)
cout << " " << i ;
这个循环只是设置向量的所有值等于 100
任何帮助都会很棒,谢谢!
解决方案
我发现根本不使用原始循环有时会更好。您正在执行的操作有一个名称,因此标准库有一个算法可以做到这一点。它是std::iota
vector<double> sensorReadings(3);
std::iota(begin(sensorReadings), end(sensorReadings), 100);
现在不需要在心里解析循环来知道它在做什么,也不需要引入多余的变量。
推荐阅读
- azure - 获取集群发布管道的名称以手动干预作业为目标
- c# - LINQ to XML 查询不返回任何结果
- c# - 调整 System.Span 实例大小的安全方法
和 System.ReadOnlySpan (C#语言) - python - Scrapy 正在从不同的网页返回内容
- javascript - 从本地存储中删除时,React list.map 不是函数
- sql-server - 将 pentaho 9.1 连接到 Azure SQL Server
- c++ - 如何在 C++ 中缩短这个简单的数据树算法?
- java - JTextField 从用户获取整数输入以在单击 JButton 时添加
- python - 列表索引超出范围 - 错误从“cmd = tokens[0]”行开始
- python - 如何遍历列表以计算字典中的键?