标签: c++ iterator range c++17 std
如果我有一个开始迭代器和一个结束迭代器,它们指向的结构定义为:
struct point { int x; int y; };
,我想从开始迭代器到结束迭代器(包括结束符),然后将结构体中的x值一个接一个地附加到向量中,我该怎么做?
我的问题是使用标准的for循环:
for (auto it = start_iterator; it != end_iterator; ++it)
尽管我很高兴也使用stl算法/库,但不会包含最终迭代器。
答案 0 :(得分:4)
C ++中的迭代器是由一对定义半开范围[begin:end)的迭代器定义的序列。 也就是说,起点指向序列的第一个元素,终点指向序列的最后一个元素。
参考:C ++编程语言:Stroustrup。
答案 1 :(得分:3)
假设end_iterator 实际上指向一个元素(意味着可以安全地获得一个迭代器),则可以使用std::next中的<iterator> :
end_iterator
std::next
<iterator>
for (auto it = start_iterator; it != std::next(end_iterator); ++it) { ... }