在multimap中迭代一个组如何知道我是在第一个还是最后一个元素?

时间:2013-02-15 16:25:05

标签: c++ c++11 iteration multimap

我的意思是这种情况:

for (auto iter = myMmap.equal_range(find_key).first;
  iter != myMmap.equal_range(find_key).second;
  ++iter)
{
  //code
}

如何从迭代器(即不使用计数器)派生出我在该集合中的第一个或最后一个项目。

2 个答案:

答案 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)

我相信混合itercit是错误的。

检查迭代器是否是组中的第一个或最后一个元素,就像在for_cycle中一样 - 第一个元素是equal_range(find_key).first,一个元素超过最后一个元素是equal_range(find_key).second