C++的 map和unordered_map

C++ map与unordered_map详解

map

在C++中,map是一个关联容器,它存储的元素是键值对,并且这些键值对是根据的顺序进行排序的。map容器通过键来访问对应的值,它保证了每个键在容器中都是独一无二的。

map的主要特性包括:

  1. 有序性map中的元素会根据键的顺序进行排序,默认情况下是按照键的升序排列

  2. 唯一键:每个键在map中都是唯一的,不允许有重复的键。

  3. 直接访问:可以通过键直接访问到对应的值,访问效率较高。

  4. 动态大小map的大小是可以动态变化的,它会根据需要自动进行扩容。

#include<iostream>
#include<map>

int main()
{
  std::map<std::string,int>mymap;
  //向map中插入元素
  mymap["apple"]=5;
  mymap["banana"]=3;
  mymap["cherry"]=8;

  //通过键访问相应的值
  std::cout<<"the price of an apple is:"<<mymap["apple"]<<std::endl;
  //检查某个键是否存在
  if (mymap.find("banana")!=mymap.end())
  {
    std::cout<<"banana is in the map!"<<std::endl;
  }
  //遍历map
  for(const auto& pair:mymap)
  {
    std::cout<< pair.first<<":"<<pair.second<<std::endl;
  }
  return 0;
}
/*
the price of an apple is:5
banana is in the map!
apple:5
banana:3
cherry:8
*/

unordered_map

unordered_map 是 C++ 标准库中的一个非常实用的关联容器,它专门用于存储键值对,并且这些键值对是无序的。这意味着,与 map 容器不同,unordered_map 不会根据键的顺序来存储元素,而是依赖于哈希表来实现快速的元素查找、插入和删除操作。

unordered_map 的主要特性包括:

  1. 无序性unordered_map 中的元素不会按照键的顺序进行排序。
  2. 唯一键:每个键在 unordered_map 中都是独一无二的,不允许有重复的键。
  3. 快速访问:通过键可以非常迅速地访问到对应的值,这是因为 unordered_map 内部使用了哈希表。
  4. 动态大小unordered_map 的大小是可以动态变化的,它会根据需要自动进行扩容或缩容。

unordered_map 的基本用法如下:

#include <iostream>  
#include <unordered_map>  
  
int main() {  
    std::unordered_map<std::string, int> umap;  
  
    // 向 unordered_map 中插入元素  
    umap["apple"] = 5;  
    umap["banana"] = 3;  
    umap["cherry"] = 8;  
  
    // 通过键访问对应的值  
    std::cout << "The price of an apple is " << umap["apple"] << std::endl;  
  
    // 检查某个键是否存在  
    if (umap.find("banana") != umap.end()) {  
        std::cout << "Banana is in the map!" << std::endl;  
    }  
  
    // 遍历 unordered_map  
    for (const auto& pair : umap) {  
        std::cout << pair.first << ": " << pair.second << std::endl;  
    }  
  
    return 0;  
}
/*The price of an apple:5
banana is in the map!
apple:5
cherry:8
banana:3*/

在这个例子中,创建了一个 unordered_map,其中键是字符串类型,值是整向 unordered_map 中插入了三个键值对,并通过键访问了对应的值。接着,检查了某个键是否存在于 unordered_map 中,并遍历了 unordered_map 中的所有元素。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beiqianqian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值