我的意思是这种情况:
for (auto iter = myMmap.equal_range(find_key).first;
iter != myMmap.equal_range(find_key).second;
++iter)
{
//code
}
如何从迭代器(即不使用计数器)派生出我在该集合中的第一个或最后一个项目。
答案 0 :(得分:5)
喜欢这个吗?
auto range = myMmap.equal_range(find_key);
for (auto it = range.first; it != range.second; ++it) {
if (it == range.first) { // first
} else if (std::next(it) == range.second) { // last
} else {}
}
答案 1 :(得分:1)
我相信混合iter
和cit
是错误的。
检查迭代器是否是组中的第一个或最后一个元素,就像在for_cycle中一样 - 第一个元素是equal_range(find_key).first
,一个元素超过最后一个元素是equal_range(find_key).second
。