c++ - 使用 foreach 语法进行迭代时如何检查我是否在最后一个元素上

标签 c++ c++11 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 的意义所在,您不需要迭代器。但是,如果不是第一个,您可以更改有关如何打印逗号的逻辑来打印它:

bool first = true;
for (auto& elem : item_vector) {
    if (!first) printf(", ");
    // print elem
    first = false;
}

如果那是循环的意图。或者您可以比较地址:

for (auto& elem : item_vector) {
    if (&elem != &item_vector.back()) printf(", ");
    // ...
}

关于c++ - 使用 foreach 语法进行迭代时如何检查我是否在最后一个元素上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27585021/

相关文章:

javascript - 是否有 for 循环或 .forEach 方法删除当前数组元素,然后让流程从同一索引继续?

c++ - 在 OS X 上使用 Boost Python 和 CMake

c++ - 需要帮助理解 C++ 中的运算符重载

javascript - 我可以在 iPhone 上运行 javascript 运行时(如 v8)吗?

c++ - 我们不能在未评估的上下文中命名非静态成员函数有什么原因吗?

c++ - std::chrono 中是否有设施来协助注入(inject) system_clock 进行单元测试

c++ - 用于检查枚举类是否可用的简单宏

r - 即使不导出变量并指定包依赖项,foreach 也能工作

c++11 - C++0x 函数<>、绑定(bind)和成员

javascript - XSLT 在 IF 语句后添加书价