How can I check if I#39;m on the last element when iterating using foreach syntax(使用 foreach 语法进行迭代时如何检查我是否在最后一个元素上)
问题描述
例如:
for( auto &iter: item_vector ) {
if(not_on_the_last_element) printf(", ");
}
或
for( auto &iter: skill_level_map ) {
if(not_on_the_last_element) printf(", ");
}
推荐答案
你真的不能.这就是 range-for 的意义所在,即您不需要迭代器.但是,如果不是第一个,您可以更改关于如何打印逗号的逻辑来打印它:
You can't really. That's kind of the point of range-for, is that you don't need iterators. But you can just change your logic on how you print your comma to print it if it's not first:
bool first = true;
for (auto& elem : item_vector) {
if (!first) printf(", ");
// print elem
first = false;
}
如果这就是循环的意图.或者您可以比较地址:
If that's the intent of the loop anyway. Or you could compare the addresses:
for (auto& elem : item_vector) {
if (&elem != &item_vector.back()) printf(", ");
// ...
}
这篇关于使用 foreach 语法进行迭代时如何检查我是否在最后一个元素上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 foreach 语法进行迭代时如何检查我是否在最后一个元素上


基础教程推荐
- 静态库、静态链接动态库和动态链接动态库的 .lib 文件里面是什么? 2021-01-01
- 如何通过C程序打开命令提示符Cmd 2022-12-09
- 如何检查GTK+3.0中的小部件类型? 2022-11-30
- 常量变量在标题中不起作用 2021-01-01
- 这个宏可以转换成函数吗? 2022-01-01
- 我有静态或动态 boost 库吗? 2021-01-01
- 在 C++ 中计算滚动/移动平均值 2021-01-01
- 如何在 C++ 中初始化静态常量成员? 2022-01-01
- 如何将 std::pair 的排序 std::list 转换为 std::map 2022-01-01
- C++结构和函数声明。为什么它不能编译? 2022-11-07