c++ - 如何遍历列表但停在 size-1

标签 c++ c++11 for-loop iterator

这段代码:

for (std::list<point>::const_iterator it = controlPoints->begin();
    it != controlPoints->end();
    ++it) {
    ...
    }

对应于:

for (int i = 0; i < controlPoints->size; i++) {
...
}

意思是,如果每次循环都得到一个元素,它将遍历列表的所有元素。

什么对应于:

for (int i = 0; i < controlPoints->size-1; i++) {
    ...
    }

我的意思是,如何使用迭代器循环 size-1 次?

最佳答案

最明显的方法是让迭代器结束并递减它:

auto stop = controlPoints.end();
--stop;

for (std::list<point>::const_iterator it = controlPoints->begin();
    it != stop;
    ++it) {
    ...
    }

如果您愿意,可以使用 std::advancestd::next,但对于这种情况,简单的递减就可以了。

关于c++ - 如何遍历列表但停在 size-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38045040/

相关文章:

c++ - 在存在不可预测的类型别名的情况下如何处理显式模板实例化?

c++ - 段错误(核心转储)错误

c++ - 如何增加程序的内存分配

c++ - 有人给我一个使用 QVector::QVector(std::initializer_list<T> args) 的例子吗?

c++ - 通过命名成员调用虚拟与地址或引用的区别

javascript - 需要一些帮助来解决这个循环

python-3.x - 如果字符串可以转换为 float,则返回 True

python - 在 python 中使用 Arcpy 具有两个 for 循环的非常慢的函数

c++ - CGAL:修改从定位调用中获取的扩展 DCEL

c++ - 使用 Eclipse 在 Windows 中为 Linux 编译 C++ 程序?