c++ - 使用随机访问迭代器增量 > 1 进行迭代的规范方法?
问题描述
我们通常使用基于范围的 for 循环或基于 C++11 之前的基于迭代器的方法迭代容器:
for(auto current = container.begin(); current != container.end(); ++current)
它通常被认为是基于索引增量的“C-ish”迭代的首选方式:
for(auto currentId = 0; currentId != container.size(); ++currentId)
然而,如果要求是每第 N个元素迭代一次,例如每三次迭代呢?
对上述方法的错误重写将给出:
// Error
for(auto current = container.begin(); current != container.end(); current += 3)
现在,我们的程序每次都表现出未定义的行为(container.size() % 3) != 0
。
- 解决此类要求的规范 C++ 方法是什么?
- 可以通过基于迭代器的迭代合理地完成吗?
- 我们应该回退到索引(比较变成
<
而不是!=
)?
解决方案
推荐阅读
- java - 如何在运行时从 Java 接口向 json 数组添加元素
- java - 为什么 Maven 不编译 Guava Table 代码而 Eclipse 编译器编译?(推断类型不符合上限)
- html - 如何始终显示 HTML 文件并在其中嵌入新页面?
- typescript - 侧边菜单 (.tsx),反应原生
- sql - 获取有条件的数据
- groovy - 从 jmeter 请求正文中捕获动态值并在同一
- python - Write all values in one line csv.DictWriter
- python - 如何注释采用可变长度元组的函数?(可变元组类型注释)
- javascript - 通过调用 C# 代码的 JS 更新 Blazor
- c# - System.Net.WebException - 内部服务器错误 500