C++map/multimap容器

1.基本概念

map中存放的每一个元素是一个pair对组,第一个元素是key,第二个元素是value。map中的元素不允许重复,但是multimap元素可重复

2.创建

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
	//创建一个map
	map<int, int> m;
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(2, 20));
	//map中的元素会根据key排序
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
		cout<<it->first<<it->second;
	}
}

3.基本操作

1,大小和交换

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
	
	map<int, int> m;
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(2, 20));
	if (!m.empty()) {//是否为空
		cout << m.size();//2
	}
	map<int, int> m2;
	m2.insert(pair<int, int>(3, 30));
	m2.insert(pair<int, int>(4, 40));
	m2.swap(m);
	for (map<int, int>::iterator it = m2.begin(); it != m2.end(); it++) {
		cout << it->first << "="<<it->second<<endl;//1=10 2=20
	}
	
}

2,插入和删除

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {	
	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;
	//按照key删除
	m.erase(2);
	//清空
	m.clear();
}

3.查找和统计

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {	
	map<int, int> m;
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(2, 30));
	map<int,int>::iterator it= m.find(2);
	if (it !=m.end()) {
		cout << "找到元素";
		//map不允许插入重复的元素,结果只有0和1,但是multimap可能大于1
		int num = m.count(2);
		cout << num;
	}
}

5.map容器自定义排序规则

默认是按照key排序,如何自定义排序规则,通过仿函数实现。代码如下

#include <iostream>
#include <map>
#include <string>
using namespace std;
//自定义仿函数
class myCompare {
public:
	bool operator()(int a, int b)const {
		return a > b;//降序排序
	}
};
int main() {	
	map<int, int,myCompare> m;//第三个参数可以传入自己定义的规则
	m.insert(pair<int, int>(1, 10));
	m.insert(pair<int, int>(2, 30));
	for (map<int, int, myCompare>::iterator it = m.begin(); it != m.end(); it++) {
		cout << it->first;
		cout << it->second;
	}
}

如果是自定义数据类型,仿函数传入两个自定义数据类型即可

发布了260 篇原创文章 · 获赞 112 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/qq_34491508/article/details/103349003