C ++基于for循环

时间:2018-05-02 08:34:34

标签: c++

尝试使用基于范围的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,如期望的那样。我的问题是使用范围基本循环来执行此操作始终将所有元素设置为相同的值。如何将上述循环设置为基于循环的范围?我的尝试如下:

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

任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分:7)

我发现根本不使用原始循环有时会更好。这是您正在进行的操作的名称,因此标准库有一个算法可以做到这一点。它是std::iota

onBackPressed()

现在没有必要在精神上解析循环以了解它在做什么,也不需要引入多余的变量。

答案 1 :(得分:4)

double y = 100;
for(double &sensorVal: sensorReadings)
{
    sensorVal = y;
    y++;
}