0
点赞
收藏
分享

微信扫一扫

c++ STL map/multimap容器

花姐的职场人生 2022-04-13 阅读 59
c++

map容器:

map中的所有元素都是pair;

pair中的第一个元素为key(键值),第二个元素为value

所有元素都会根据元素的键值自动排序

map和multimap是关联式容器,底层结构为二叉树

可以根据键值快速找到value值

map和multimap的区别:

map不允许有重复的key值

multimap允许有重复的key值元素

1.构造函数和赋值

map(T1,T2)mp默认构造函数
map(const map&mp)拷贝构造
map&operator=(const map &p)重载等号

代码实现:

添加数据有多种方法:

常用的有

1.pair<T1,T2>(elem1,elem2)

2.数组  map[n]=m;

3.map<T1.T2>::value_type(elem1,elem2)

void text()
{
	//创建一个map容器
	map<int, int>mp;
	//添加数据
	//1.匿名函数
	mp.insert(pair<int, int>(1, 50));
	//2.用 value_type
	mp.insert(map<int,int>::value_type(2, 60));
	//3.用数组方式
	mp[3] = 80;
	mp[4] = 40;

	for (map<int, int>::iterator it = mp.begin(); it!= mp.end(); it++)
	{
		//输出方式
		cout << (*it).first << "  " << (*it).second << endl;
		//cout<<it->frist<<"  "<<it->second<<endl;
	}

}

 

 

2.插入和删除

insert(elem)插入elem
clear()清空
erase(pos)删除pos迭代器所指的元素,返回下一个元素迭代器
erase(beg,end)删除区间的所有元素,返回下一个元素迭代器
erase(key)删除容器中值为key的元素

3.大小和交换

size()元素个数
empty()判空
swap()交换

4.查找和统计

find(key)查找key,存在返回元素迭代器,不存在返回map.end()
count(key)统计个数

5.排序 利用仿函数

//仿函数
class person {
public:
	bool operator()(int a, int b)
	{
		return a > b;
	}
};
void text()
{
	//创建一个map容器
	map<int, int,person>mp;
	mp[1] = 20;
	mp[2] = 20;
	mp[3] = 80;
	mp[4] = 40;
	mp[5] = 20;
	for (map<int, int>::iterator it = mp.begin(); it != mp.end(); it++)
	{
		cout << it->first << "  " << it->second<< endl;
	}


}
举报

相关推荐

0 条评论