在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 {} 
} 

我相信混合itercit是错字。

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

+0

是的,它是,我纠正它。 – rsk82 2013-02-15 16:33:14