gpt4 book ai didi

c++ - 使用索引元素操作时循环范围不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 00:35:39 27 4
gpt4 key购买 nike

我不确定如何构建标题,但解释更简单。我正在玩循环的 c++11 范围 ( link )。

我写了以下内容:

for(auto &elem:vec){
elem/=vec[0];
}

编译但不更改 vector “vec”中的任何内容。

另一方面,这有效:

elem0 = vec[0];
for(auto &elem:vec){
elem/=elem0;
}

这是预期的吗?第一种方法有什么问题?如果有帮助,我的编译器版本是 g++ 4.6.3。

最佳答案

实际上它工作得很好,只是在您的示例中,vec[0] 在第一次运行后已更改为 1,这使得剩余的运行看起来像“不工作”(如果除以 1,则值保持不变)。

您将通过使用以下示例清楚地看到它(将“按预期” 工作):

vector<float> vec = { 1, 2, 3, 4, 5 };
for (auto &elem : vec){
elem /= vec[4];
}

// now vec={0.2, 0.4, 0.6, 0.8, 1.0}

关于c++ - 使用索引元素操作时循环范围不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23502311/

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