C++——map容器插入,删除,查找,统计与排序

本文介绍了C++map容器的插入、删除操作,包括多种方法,以及查找和统计功能,重点提到了利用仿函数定制排序规则。
摘要由CSDN通过智能技术生成

1.map插入和删除

功能描述:
 map容器进行插入数据和删除数据
 函数原型:
 1.insert(elem);      //在容器中插入元素
 2.clear();               //清除所有元素
 3.erase(pos);        //删除pos迭代器所指的元素,返回下一个元素的迭代器
 4 .erase(beg,end);//删除区间[beg,end)的所有元素,返回下一个元素的迭代器
 5.erase(key);        //删除容器中值为key的元素。

//插入数据的写法
	//第一种
	m.insert(pair<int, int>(1, 10));

	//第二种
	m.insert(make_pair(2, 20));

	//第三种
	m.insert(map<int, int>::value_type(3, 30));
	//可以记作:map容器作用域下的值类型(value_type),然后把值写进去就行了

	//第四种
	m[4] = 40;
	//不建议用第4种,如果按照这种方式,key插插错了或不存在的数他会创建一个新的对组出来,然后value=0 例子如下
	cout << m[5] << endl;

	//虽然[]不建议插入,但是可以用于利用key访问到value 比如
	cout << m[4] << endl;//他会打印40

//删除
	m.erase(m.begin());

m.erase(3);//只按照key删除,不会按照value的方式删除

//区间方式删除
    m.erase(m.begin(), m.end());

总结:
* map插入方式很多,记住其一即可
* 插入 ---insert
* 删除 --- erase
* 清空 --- clear

2.map查找和统计

功能描述:
  对map容器进行查找数据以及统计数据
函数原型:
 1.find(key); //查找key是否存在,若存在,返回该键的元素的迭代器; 若不存在,返回set.end();
 2.count(key);//统计key的元素个数

    map<int, int>m;
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(2, 20));
    m.insert(pair<int, int>(2, 30));//key值一样插不进去
//查找
    map<int, int>::iterator pos = m.find(3);
//统计
	//map不允许插入重复key元素,对于count统计而已 结果要么是0要么是1
	//multimap的cout统计可能大于1
    int num = m.count(3);//统计3这个数的个数

总结:
 查找 --find(返回的是迭代器)
 统计 --cout(对于map,结果为0或者1) 对于multiset而已可能大于1

3.map容器排序

 map容器默认排序规则为 按照key值进行 从小到大排序,掌握如何改变排序规则

主要技术点:
 利用仿函数,可以改变排序规则

class MyCompare
{
public:
	bool operator() (int vl, int v2)
	{
		//降序
		return vl > v2;
	}
};


//创建map容器,排序
	map<int, int, MyCompare>m;//MyCompare就是告诉编译器用这个规则进行排序

总结:
* 利用仿函数可以指定map容器的排序规则
* 对于自定义数据类型,map必须要指定排序规则,同set容器

仅个人看视频笔记与理解,如有误可指出谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值