【发布时间】:2020-08-03 00:20:12
【问题描述】:
如果我有一个开始迭代器和一个结束迭代器指向定义为的结构:
struct point {
int x;
int y;
};
,我想从开始迭代器到结束迭代器(包括),并将结构中的x值一个接一个地附加到一个向量中,我该怎么做?
我的问题是这样的标准 for 循环:
for (auto it = start_iterator; it != end_iterator; ++it)
将不包含结束迭代器,但我也很乐意使用 stl 算法/库。
【问题讨论】:
-
"将不包含结束迭代器" - 这是有意的。但这并不意味着您的
points 之一将被排除 - 迭代器范围是右侧专有的。这意味着如果你有[1, 2, 3],那么begin指向1,但end指向一个虚构元素过去3,所以3将是包括。请提供有关此评论的更多背景信息。 -
我想考虑 end_iterator 指向的元素
-
这意味着您的
end_iterator被认为是非标准的,您不应做出导致此类问题的设计决策。您如何获得您的end_iterator?它的类型是什么? -
@user11508332 没有结束迭代器指向的元素。这就是它指向过去结束的意义......
-
在你用
find_if初始化你的end_iterator后,简单地增加它,你将再次陷入end_iterator指向过去的常见情况。
标签: c++ iterator range c++17 std