2

我的意思是这种情况:

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

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

4

2 回答 2

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 {}
}
于 2013-02-15T16:28:52.417 回答
1

我相信混合iter并且cit是错字。

您检查迭代器是组中的第一个还是最后一个元素,就像您在 for_cycle 中所做的一样 - 第一个元素是equal_range(find_key).first,最后一个元素之后的一个元素是equal_range(find_key).second

于 2013-02-15T16:29:25.523 回答