在multimap中遍历一个组我怎么知道我是在第一个还是最后一个元素?
问题描述:
我的意思是这样的情况:在multimap中遍历一个组我怎么知道我是在第一个还是最后一个元素?
for (auto iter = myMmap.equal_range(find_key).first;
iter != myMmap.equal_range(find_key).second;
++iter)
{
//code
}
如何从迭代器中获得(即不使用计数器),我在第一个或最后一个项目在此集中。
答
是否这样?
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 {}
}
答
我相信混合iter
和cit
是错字。
您检查迭代器是否是组中的第一个或最后一个元素,就像您在for_cycle中一样 - 第一个元素是equal_range(find_key).first
,最后一个元素是equal_range(find_key).second
。
是的,它是,我纠正它。 – rsk82 2013-02-15 16:33:14