STL总结之map

本文详细介绍了C++ STL中的map容器,包括其作为红黑树的数据结构特性,如何初始化、修改、查询、增加和删除元素,以及各种操作方法的使用示例,帮助读者深入理解map的使用。
摘要由CSDN通过智能技术生成

介绍

map 是一个封装红黑树 (自平衡二叉树) 的关联容器。容器中每个元素都是 key/value,其中 key 为排序对象。每个 key 只能出现一次,不允许重复出现。
map 定义于头文件 <map> 中,其声明如下:

template<
    class Key,
    class T,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<std::pair<const Key, T> >
> class map;

map 容器是一个类。
map 容器存储元素都是 key/value (键值对)。

初始化

map 容器需要指定排序规则,有两种方式可指定:

  • 元素类型重载小于号运算符。
    strcut T {
    	…… // 各种参数
    	// 该函数声明必须这样写
    	friend bool operator <(const T& a,const T& b)
    	{
    		// check(a,b)为 a < b 成立条件
    		return check(a,b) ? true : false;
    	}
     };
    
  • 以 类型参数 定义,需要定义一个 函数对象。如 set<T,greater<T> >
    struct Cmp {
    	bool operator()(const T& a,const T& b)
    	{	
    	    // check(a,b)为 a < b 成立条件
    		return check(a,b) ? true : false;
    	}
    };
    
    class Cmp {
    public:
    	bool operator()(const T& a,const T& b)
    	{	
    	    // check(a,b)为 a < b 成立条件
    		return check(a,b) ? true : false;
    	}
    };
    
    // 这两个 Cmp 是等价的
    map<int,int,Cmp> s;
    

以下构造函数都不涉及定义排序规则,均采用默认排序规则——升序。

  • map<T,T> mp;
    创建一个空的 map 容器。
    map<int,string> mp;
    
  • map<T,T> mp({ {num1.key,num1.value},{num2.key,num2.value},……});
    创建一个以初值列元素为初值的 map 容器。
    m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值