STL中的关联式容器——map(映射)

STL中的关联式容器——map(映射)

  map,即“映射”。map是关联容器的一种,具体实现采用了红黑树的平衡二叉树的数据结构。它提供一对一(其中第一个称为关键字key,每个关键字只能在map中出现一次,第二个称为该关键字的值value)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。由于是利用了红黑树实现,因此可以快速插入key-value记录和快速删除记录。
  并且对于迭代器来说,可以修改value,而不能修改key,而且它根据key修改value记录,因此增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。
  map是C++ STL的一个重要成员,使用它时需要包含头文件:

#include <map>; //包含了map和multimap两种容器的定义

一、map 的初始化

有以下方式,举例说明如下:

map<int,string> a;
map<int,string> b(a); //拷贝队列a给队列b

二、map 对象的重要操作

列举如下:

a.insert(); //插入元素 
a.erase(); //删除一个元素 
a.find(); //查找一个元素 
a.clear(); //删除所有元素 
a.empty(); //如果map为空则返回true 
a.count(); //返回指定元素出现的次数 
a.size(); //返回map中元素的个数 
a.max_size(); //返回可以容纳的最大元素个数 
a.swap(); //交换两个map 

三、优先级的设定

可以有以下几种方式,列举如下:

struct cmp1
{
    
    
    bool operator ()(const int &a,const int &b)
    {
    
    
       return a>b;//最大值优先
   	}
};
struct cmp2
{
    
    
	bool operator ()(const int &a,const int &b)
	{
    
    
	    return a<b;//最小值优先
	}
};
struct node1
{
    
    
	int u;
	bool operator < (const node1 &a) const
	{
    
    
		return u>a.u;//最大值优先
	}
};
struct node2
{
    
    
	int u;
	bool operator < (const node2 &a) const
	{
    
    
		return u<a.u;//最小值优先
	}
};
map<int,string>q1;//采用默认优先级构造队列,最小值优先
map<int,string,cmp1>q2;//最大值优先 
map<int,string,cmp2>q3;//最小值优先
map<int,string,greater<int> >q4;//最大值优先
//注意“>>”会被认为错误,因为这是右移运算符,所以这里用空格号隔开
map<int,string,less<int> >q5;//最小值优先
map<node1,string>q6;//最大值优先
map<node2,string>q7;//最小值优先

猜你喜欢

转载自blog.csdn.net/hyl1181/article/details/108569128