gpt4 book ai didi

循环中的 C++ 模迭代器

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:03 25 4
gpt4 key购买 nike

有什么方法可以写出这个for循环

vector<int> vec{1,2,3,4,5,6};
for (int i=0; i<vec.size(); ++i)
float result = vec[i]-vec[(i+1)%vec.size()];//Subtract vec[0] from vec[5] in last iteration.

在带有迭代器的版本中?因此,像这样:

vector<int> vec{1,2,3,4,5,6};
for (vector<int>::iterator it=vec.begin(); it!=vec.end(); ++it)
float result = *it - *((it+1)%vec.size());

最佳答案

您可以使用三元 ?: 运算符并选择 beginit + 1 取决于当前 it 迭代器是否指向末尾之前的元素:

for (auto it = vec.begin(); it != vec.end(); ++it) {
float result = *it - *((it + 1 == vec.end()) ? vec.begin() : it + 1);
}

Live demo

关于循环中的 C++ 模迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31921913/

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