std::map 反向遍历

1、反向遍历: 可以使用反向迭代器reverse_iterator反向遍历map映照容器中的数据,它需要rbegin()和rend()方法指出反向遍历的起始位置和终止位置。
#pragma warning(disable:4786)
#include<iostream> 
#include<map>
#include<string> 
using namespace std; 
 
int main() 

    map<int,char> m; 
    //插入元素,按照键值大小插入黑白树
    m[25]='m'; 
    m[28]='k'; 
    m[10]='x'; 
    m[30]='a'; 
    m.erase(28); 
         
    for(map<int,char>::reverse_iterator rit=m.rbegin();rit!=m.rend();rit++) 
    cout<<(*rit).first<<","<<(*rit).second<<endl;    
    return 0; 
    } 
2、元素搜索: 使用find()方法搜索某个键值,如果搜索到了,则返回该键值所在的迭代起位置否则,返回end()迭代器位置,由于map采用黑白树搜索,所以搜索速度极快。当然也可以用count()方法,但是需要如果想直接使用的话再使用键值搜索,需要两次查找,这时候就不如find功能好。

程序代码:
#pragma warning(disable:4786)
#include<iostream> 
#include<map>
#include<string> 
using namespace std; 
 
int main() 

    map<int,char> m; 
    //插入元素,按照键值大小插入黑白树 
    m[25]='m'; 
    m[28]='k'; 
    m[10]='x'; 
    m[30]='a'; 

    map<int,char>::iterator it;
    it=m.find(28);
    if(it!=m.end())
          {
           cout<<(*it).first<<":"<<(*it).second<<endl;            
            }
    else cout<<"not find it"<<endl;  
    return 0; 
    }  
  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在std::map反向取值,可以使用rbegin()和rend()成员函数来获取一个反向迭代器区间,然后使用逆向迭代器遍历容器。rbegin()返回指向最后一个元素的迭代器,而rend()返回指向第一个元素之前的迭代器。通过使用逆向迭代器,您可以从最后一个元素开始遍历map。这可以通过以下步骤来实现: 1. 使用rbegin()和rend()函数获取一个反向迭代器区间。 2. 使用逆向迭代器遍历整个区间,即从最后一个元素开始遍历到第一个元素。 以下是一个示例代码,演示了如何在std::map中进行反向取值: ```cpp std::map<int, std::string> myMap; // 在map中插入一些元素 myMap = "A"; myMap = "B"; myMap = "C"; // 使用逆向迭代器遍历map for (auto rit = myMap.rbegin(); rit != myMap.rend(); ++rit) { int key = rit->first; std::string value = rit->second; // 在这里进行你想要的操作,比如打印反向的键值对 std::cout << "Key: " << key << ", Value: " << value << std::endl; } ``` 这段代码将输出以下内容: ``` Key: 3, Value: C Key: 2, Value: B Key: 1, Value: A ``` 这样就可以实现在std::map反向取值的操作了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【C++】char uchar string stringstream queue array vector set map std::function std::bind](https://blog.csdn.net/qq_21950671/article/details/98885199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值