C++ STL中的map容器

map/multimap容器的基本概念

    1.map容器的基本概念

       map的特性是,所有元素都会根据元素的键值自动排序,map所有的元素都是pair,同时拥有键值和实值,pair第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。
       可以通过map的迭代器改变map的键值吗》答案是不行的,因为map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织,如果想要修改map元素的实值,那是可以的。

       map和list拥有相同的某些性质,当对他的容器元素进行新增或者删除操作时候,操作之前的迭代器,在操作完成之后仍然有效,被删除的那个元素的迭代器是个例外。
       与set和multiset性质类似,map和multimap性质也是差不多的,就是multimap可以允许键值重复。
map和multimap底层实现都是红黑树。

    2.map容器常用api

     2.1 插入
vvoid test_map() {
	map<int, int>m;
	//插入方式
	m.insert(pair<int, int>(1, 10));
	//c插入方式2
	m.insert(make_pair(2, 20));
	//插入方法3
	m[4] = 40;
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
		cout << "the key is :" << it->first << "   " << "the value is :"<<it->second << endl;
	}
}

m1

     2.2删除

earse(pos)//删除pos迭代器所指的元素,返回下一个元素的迭代器
earse(beg,end)//删除区间内的所有元素,返回下一个元素的迭代器
earse(keyelem)//删除容器内key为keyelem的元素,即键值为keyelem的

void test_map() {
	map<int, int>m;
	//插入方式
	m.insert(pair<int, int>(1, 10));
	//c插入方式2
	m.insert(make_pair(2, 20));
	m.insert(make_pair(3, 30));
	//插入方法3
	m[4] = 40;
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
		cout << "the key is :" << it->first << "   " << "the value is :"<<it->second << endl;
	}
	cout << "    " << endl;
	m.erase(4);
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
		cout << "the key is :" << it->first << "   " << "the value is :" << it->second << endl;
	}
}

m2

     2.3 查找
void test_m1() {
	map<int, int>m;
	m.insert(pair<int, int>(1, 10));
	m.insert(make_pair(2, 20));
	m.insert(make_pair(3, 30));
	m[4] = 40;
	map<int, int>::iterator pos = m.find(3);
	if (pos != m.end()) {
		cout << "find the key is  " << (*pos).first << "and the value is :" << (*pos).second << endl;
	}
}

m3

    3 总结

  • 关联式容器

  • 插入:

  •     m.insert(pair<int.int>(1,1))

  •     m.insert(make_pair(1,1))

  •     m.insert(map<int,int>::value_type(3,3)

  •    &nbsp m[4]=4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值