gpt4 book ai didi

c++ - 带有迭代器和自定义步长的循环结束条件

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:07 31 4
gpt4 key购买 nike

我正在为以前构建的代码添加一些功能。我必须循环遍历一个列表,步骤为 2 并以不同方式处理元素。

这是我的尝试。

for(auto list_it = std::next(list.begin()); list_it != list.end() ; std::advance(list_it,2)){

// Do something

}

我正在初始化 list_it 以使用 next(list.begin()) 指向第二个元素每次迭代它向前移动 2 advance(list_it,2))

[问]

我不确定如何测试循环退出条件。

如果我们在前进 2 时跳过 list.end()

list_it != list.end() 可能无法工作。

有没有标准的方法来处理这个问题?我可能会检查跳过的迭代器是否为 list.end(),但我不认为这是一种不错的、可扩展的、步长更大的方法。 (除非事实证明这是唯一的方法)。

最佳答案

更新:针对通用尺寸进行修改。

对于 k 的步长,您可以在 O(n) 或 O(1) 中获得列表的大小 - 取决于 C++ 编译器。之后,您可以执行以下计算步骤:

  size_t steps_allowed = list.size()/k; 
// list.size() is O(n) for C++98 and O(1) for standard C++ 11.

然后遍历另一个变量 i 并根据 steps_allowed 检查 i 的内部循环终止条件。

关于c++ - 带有迭代器和自定义步长的循环结束条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59566298/

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