c++: unordered_map

本文详细介绍了C++标准模板库中两种重要的容器:std::map和std::unordered_map。std::map基于红黑树实现,适用于有序数据存储及高效查找、插入和删除操作;std::unordered_map则基于哈希表,特别适合需要快速查询的场景,但其迭代器遍历效率较低。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    std::map对应的数据结构是红黑树。红黑树是一种近似于平衡的二叉查找树,里面的数据是有序的。在红黑树上做查找、插入、删除操作的时间复杂度为O(logN)。

    std::unordered_map对应哈希表,哈希表的特点就是查找效率高,时间复杂度为常数级别O(1), 而额外空间复杂度则要高出许多。所以对于需要高效率查询的情况,使用std::unordered_map容器,但是std::unordered_map对于迭代器遍历效率并不高。而如果对内存大小比较敏感或者数据存储要求有序的话,则可以用std::map容器。

 

std::unordered_map<std::string, std::string> mymap2 = { { "Australia", "Canberra" }, { "U.S.", "Washington" }, { "France", "Paris" } };  
    std::cout << "mymap2 contains:";  
    for (auto it = mymap2.begin(); it != mymap2.end(); ++it)  
        std::cout << " " << it->first << ":" << it->second;  
    std::cout << std::endl;  
   umap.insert(std::make_pair("e", 2.718)); // 可以通过make_pair插入,也可以通过hashmap.insert({ nums[i], i })插入{};
   // erase examples:  
    mymap5.erase(mymap5.begin());      // erasing by iterator  
    mymap5.erase("France");             // erasing by key  
    mymap5.erase(mymap5.find("China"), mymap5.end()); // erasing by range  

 for (auto it = mymap2.begin(); it != mymap2.end(); ++it)  
        std::cout << " " << it->first << ":" << it->second;  //如map


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值