C++中map容器的基本使用----在B站听黑马程序员c++课程的记录

概念

  • map中所有元素都是pair, pair中第一个元素为key(键值),第二个元素为value(实值), 可以根据key值快速找到value值
  • 插入的同时元素按照键值自动排序,也叫关联式容器,底层结构也是用二叉树实现。
  • map和multimap 区别
    map不允许容器中有 重复key值 元素
    multimap允许容器中有重复key值元素

构造

//注意因为是对组,所以需要两个值
map<T1, T2> mp; //map默认构造函数: map<int,int>m;
map(const map &mp); //拷贝构造函数map<int, int>m2(m);
//赋值
map& operator=(const map &mp); //重载等号操作符m3 = m2;
//遍历

 for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << "key = " << it->first << " value = " << it->second << endl;
	}

大小和交换

size(); //返回容器中元素的数目m.size()
empty(); //返回bool类型 判断容器是否为空m.empty()
swap(st); //交换两个集合容器m.swap(m2);

插入和删除

insert(elem); //在容器中插入元素。
插入有如下四种方法,前三种对组的产生方法不同,第四种重载了[]进行操作。
老师不建议使用第四种插入,但可以通过[]与key配合查找value。
如果没有m[5],但程序中访问m[5],map会自动产生一个键值对key为5,value默认为0;

	map<int, int> m;  //构造
	//第一种插入方式
	m.insert(pair<int, int>(1, 10));
	//第二种插入方式
	m.insert(make_pair(2, 20));
	//第三种插入方式
	m.insert(map<int, int>::value_type(3, 30));
	//第四种插入方式
	m[4] = 40; 

clear(); //清除所有元素m.clear();
erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。m.erase(m.begin());
erase(beg, end); //删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。m.erase(m.begin(),m.end());
erase(key); //删除容器中值为key的元素。m.erase(3);

查找、统计、排序

find(key); //查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();
count(key); //统计key的元素个数
排序同set,需要在插入前进行设置,因为插入时就会自动默认从小到大排序
如果要改变插入的顺序,需要使用仿函数指定排序规则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值