c++提高篇——map/multimap容器

一、map基本概念

map中所有元素都是pair,palir中第一个元素为key (键值),起到索引作用,第二个元素为value(实值)。所有元素都会根据元素的键值自动排序。

map/multimap属于关联式容器,底层结构是用二叉树实现。可以根据key值快速找到value值。
map不允许容器中有重复key值元素,multimap允许容器中有重复key值元素。

二、构造和赋值操作

构造:
map<T1,T2> mp; map默认构造函数
map(const map &mp ); 拷贝构造函数
赋值:
map& operator=( const map &mp); 重载等号操作符

	map<int, int> m;

	//利用对组来讲key值与value值插入到容器中
	m.insert(pair<int, int>(1, 10));
	m.insert(make_pair(2, 20));
	m.insert(map<int, int>::value_type(3, 30));
	m.insert(pair<int, int>(4, 40));

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

三、大小和交换

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

四、插入和删除

insert(elem); 插入元素
几种方式样例如下:

	//第一种
	m.insert(pair<int, int>(1, 10));
	//第二种
	m.insert(make_pair(2, 20));
	//第三种
	m.insert(map<int, int>::value_type(3, 30));
	//第四种,不建议使用这种方法插入,如果一旦差错位置或者key不存在的位置,则会产生问题。但是可以使用这种方式可以通过key访问value
	m[4] = 30;

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

五、查找和统计

find(key); 查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();。
count(key); 统计key的元素个数。

六、排序操作

map容器默认排序规则为按照key值进行从小到大排序。我们可以利用仿函数来改变排序规则。

class MyCompare
{
public:
	bool operator()(int s1, int s2)
	{
		return s1 > s2;
	}
};

void test08()
{
	map<int, int, MyCompare> m;

	//利用对组来讲key值与value值插入到容器中
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(2, 20));
	m.insert(pair<int, int>(3, 30));
	m.insert(pair<int, int>(4, 40));

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

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值