C ++从开始迭代器到结束迭代器并执行操作

时间:2020-08-03 00:20:12

标签: c++ iterator range c++17 std

如果我有一个开始迭代器和一个结束迭代器,它们指向的结构定义为:

struct point {
int x;
int y;
};

,我想从开始迭代器到结束迭代器(包括结束符),然后将结构体中的x值一个接一个地附加到向量中,我该怎么做?

我的问题是使用标准的for循环:

for (auto it = start_iterator; it != end_iterator; ++it)

尽管我很高兴也使用stl算法/库,但不会包含最终迭代器。

2 个答案:

答案 0 :(得分:4)

enter image description here C ++中的迭代器是由一对定义半开范围[begin:end)的迭代器定义的序列。 也就是说,起点指向序列的第一个元素,终点指向序列的最后一个元素。

参考:C ++编程语言:Stroustrup。

答案 1 :(得分:3)

假设end_iterator 实际上指向一个元素(意味着可以安全地获得一个迭代器),则可以使用std::next中的<iterator>

for (auto it = start_iterator; it != std::next(end_iterator); ++it) { ... }