c++ - 在最后一个元素迭代器上停止 C++

标签 c++ iterator c++11

执行循环并在倒数第二个元素后停止的最优雅方法是什么(在 C++11 中)?

注意:我指的是双向迭代器;随机访问迭代器是一个微不足道的特例,当然,因为它们有 +- 运算符。

std::list<double> x{1,2,3,4,5,6};

for (auto iter = x.begin(); iter != x.end(); ++iter) {
  auto iter2 = iter;
  ++iter2;
  if (iter2 == x.end()) break;
  std::cout << *iter << std::endl;
}

最佳答案

使用std::prev函数:

std::list<double> x{1,2,3,4,5,6};

for (auto iter = x.begin(); iter != std::prev(x.end()); ++iter) {
  std::cout << *iter << std::endl;
}

关于c++ - 在最后一个元素迭代器上停止 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11073860/

相关文章:

c++ - 优化按位逻辑

c++ - 永不结束的 STD 库迭代器?

c++ - 如何在干净的代码中向后遍历双向迭代器?

c++ - 不分离模板类的函数声明和定义是一个好习惯吗?

c++ - 我怎样才能将 std::map 的迭代器递减一定数量?

javascript - 如何从 javascript xpcom 组件使用 C++ xpcom 组件

c++ - 在类内的 union 内访问 map 会出现段错误

c++ - 人为限制的ostream

c++ - 迭代器取消引用中的段错误

c++ - 在数组搜索中返回迭代器索引