【C++】STL进阶-- 树形结构的关联式容器(map和multimap)

本文主要内容

1.理解键值对
2.map 的使用
3.multimap 的使用
4.底层结构

1.键值对

键值对是用来表示一对一的数据映射关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表关键字,value代表与key对应的信息值。
我们生活中有许多这样的对应关系,例如英汉互译字典就是典型的<k,v>模型。每个中文词语与英文单词就存在着一一映射的关系,我们用其他数据结构描述出这样的关系可能需要很多辅助,但是用map就能轻易的进行描述。这就是键值对为我们**在用编程处理一对一数据的时候,提供的快速通道。**下面是键值对的定义:

STL中关于键值对的定义:
//键值对
template<class K,class V>
struct pair
{
	typedef K first_type;
	typedef V second_type;

	K first;
	V second;
	pair()
		:first(K())
		, second(V())
	{}

	pair(const K& a, const V&b)
		: first(a)
		, second(b)
	{}
}
make_pair ( , )的定义:
//make_pair 是函数模板,根据pair的类型直接推出参数类型
template<class K, class V>
pair<K, V> make_pair(const K&k, const V&v)
{
	return pair<K, V>(k, v);
}

2. map的使用

想要深入了解的可以查看:map文档
下面我简单介绍 一下map:

  1. map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。
  2. 在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的内容。键值 key和值value的类型可能不同,并且在map的内部,key与value通过成员类型value_type绑定在一起, 为其取别名称为pair: typedef pair value_type;
  3. 在内部,map中的元素总是按照键值key进行比较排序的。
  4. map中通过键值访问单个元素的速度通常比unordered_map容器慢,但map允许根据顺序对元素进行 直接迭代(即对map中的元素进行迭代时,可以得到一个有序的序列)。
  5. map支持下标访问符,即在[]中放入key,就可以找到与key对应的value。
  6. map通常是用红黑树实现的。
map使用示例–英汉词典

map提供一对一的数据处理能力(其中第一个是关键字,第二个是该关键字对应的值),由于这个特性(键值对),我们在描述英汉互译词典时就变得很轻松了。下面是使用map描述字典的示例

示例代码
//map 的使用--英汉互译字典
	void test_map()
	{
   
   
		map<string, string> m1;
		map<string, string>m2{
   
    {
   
    "apple", "苹果" },
		{
   
    "banan", "香蕉" }, {
   
    "orange", "橘子" } };
		cout << m2["apple"] << endl;     //苹果
		cout << m2["peach"] << endl;     //空串
		
		//迭代器使用
		map<string, string>::iterator it = m2.begin();
		//auto it=m2.begin();
		while (it != m2.end())
		{
   
   
			cout << (*it).first << ":" << (*it)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值