c++ - 是否可以查看 range-for 循环中的下一个元素?
问题描述
说我有这个:
void test(std::vector<int>& my_ints) {
for (auto& my_int : my_ints) {
if (my_int == 5 && /* not the last value in the vector */) {
my_int += /* next value in the vector */;
}
}
}
是否有任何有效的语法可以替换评论?
PS!是的,我知道,带有常规 for 循环的小菜一碟,但我想看看我是否可以对这类东西使用 range-for 循环。
解决方案
是否可以偷看下一个元素
在一般情况下 - 不。
由于其中的对象std::vector
是连续存储的,您可以这样做*(&my_int + 1)
,但如果您稍后更改容器,代码可能会静默中断。不要那样做!
要检查当前元素是否是最后一个元素,您可以使用&my_int == &my_ints.back()
.
推荐阅读
- npm - Gulp-cli 版本未更新
- delphi - 如何强制 Delphi 的 TADOConnection 使用 ansistring 作为命令?
- paperjs - 调整大小在 paperjs 0.11.8 中不起作用,但适用于 0.9.25
- javascript - 用户通过 chrome 扩展加载时如何隐藏 gmail 收件箱菜单
- java - SimpleFileVisitor 遍历目录树以查找除两个子目录之外的所有 .txt 文件
- python-3.x - seaborn 库没有更新条形图?
- python - 如何创建当前导入模块的列表?
- android - Android/Kotlin - 创建两个按钮并应用约束
- angular - 由于某种原因没有出现 Angular 对话框窗口
- dart - 我们在flutter的dev_dependencies下添加的