gpt4 book ai didi

基于 C++ 范围的 for 循环

转载 作者:太空狗 更新时间:2023-10-29 19:47:40 30 4
gpt4 key购买 nike

尝试使用基于范围的 for 循环做一些事情。它可以通过像这样的常规 for 循环来完成:

vector<double> sensorReadings(3);
sensorReadings = {0,0,0};

for (int i = 0; i < sensorReadings.size();i++)
{
sensorReadings[i] += i + 100 ;

}

我想将 vector 的第一个元素设置为 n(在本例中为 100)并将所有其他元素设置为 n+1。在这种情况下,在上述循环运行后, vector 为 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 ;

这个循环只是将 vector 的所有值设置为 100

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

最佳答案

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

vector<double> sensorReadings(3);
std::iota(begin(sensorReadings), end(sensorReadings), 100);

现在不需要在脑子里分析循环就知道它在做什么,也不需要引入多余的变量。

关于基于 C++ 范围的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50130341/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com