C++|STL学习笔记-对STL中关联容器map的进一步认识

关联容器map
key + value 的值

关联容器 = 有序容器(红黑树) + 无序容器(散列表) + hash_map

有序容器中:
map的键值是不允许重复的
multimap的键值是允许重复的
set是一个集合,键值=实值,就是只包含一个值,既是键值也是实值,不允许重复
multiset运行重复


map
底层就是红黑树(平衡排序二叉树)
键值保存,高效访问
插入效率低于链表,因为涉及排序
 

 

下面是一段插入代码,菜鸡一般是这么写的:

#include 
#include 
using namespace std;

void MapConstruct(){
	map mp;
	mp.insert(pair(1, 'a'));
	return;
}

int main(){

	MapConstruct();
	getchar();
	return 0;
}

局部变量结构如下:

 

进价一点点的写法如下代码(稍微有工作经验的人一般是这么写的)

#include 
#include 
using namespace std;

void MapConstruct(){

	typedef pair in_pair;

	map mp;
	mp.insert(in_pair(1, 'a'));
	//mp.insert(pair(1, 'a'));
	return;
}

int main(){

	MapConstruct();
	getchar();
	return 0;
}

局部变量结构如下:

C++|STL学习笔记-对STL中关联容器map的进一步认识_第1张图片

 

遍历一下:

#include 
#include 
#include 
using namespace std;

typedef pair in_pair;

void fun(in_pair pr){
	cout << pr.first << "\t" << pr.second << endl;
}

void MapConstruct(){


	map mp;
	mp.insert(in_pair(1, 'a'));
	mp.insert(in_pair(2, 'b'));
	mp.insert(in_pair(3, 'c'));
	mp.insert(in_pair(4, 'd'));

	for_each(mp.begin(), mp.end(), fun);
	return;
}

int main(){

	MapConstruct();
	getchar();
	return 0;
}

运行截图如下:

C++|STL学习笔记-对STL中关联容器map的进一步认识_第2张图片

 

然后,大佬的写法(标准写法,一般是这种写法)

不得不说,大佬和小菜的最大区别就是大佬想得比较周到:

#include 
#include 
#include 
using namespace std;

typedef pair in_pair;
typedef pair::iterator, bool> in_pair_bool;

void judgeOk(in_pair_bool pr){
	if(pr.second){
		cout << "插入成功!" << endl;
	}
	else{
		cout << "插入失败!" << endl;
	}
}

void fun(in_pair pr){
	cout << pr.first << "\t" << pr.second << endl;
}

void MapConstruct(){

	map mp;
	pair::iterator, bool> pr;



	pr = mp.insert(in_pair(1, 'a'));
	judgeOk(pr);
	pr = mp.insert(in_pair(2, 'b'));
	judgeOk(pr);
	pr = mp.insert(in_pair(3, 'c'));
	judgeOk(pr);
	pr = mp.insert(in_pair(4, 'd'));
	judgeOk(pr);
	pr = mp.insert(in_pair(1, 'e'));
	judgeOk(pr);

	for_each(mp.begin(), mp.end(), fun);
	return;
}

int main(){

	MapConstruct();
	getchar();
	return 0;
}

运行截图如下:

C++|STL学习笔记-对STL中关联容器map的进一步认识_第3张图片

你可能感兴趣的:(C/C++,C++,STL,STL,工作笔记)