简介:
本质:
优点:
map和multimap的区别:
PS: 接下来我会从(map的构造和赋值)、(map的大小交换)、(map插入和删除)、(map的查找和统计)、(map容器排序)等方面来介绍map容器,每个案例都会有代码和图片说明~
void display(mapmp) {
for (map::iterator it = mp.begin(); it != mp.end(); it++) {
cout << "key值:" << it->first << "value值:" << it->second << endl;
}
cout << endl;
}
复制代码
代码如下:
//map的构造和赋值
//map的构造和赋值
void test01() {
//默认构造函数
mapmp;
//给mp插数
mp.insert(pair(1, 23));
mp.insert(pair(66, 45));
mp.insert(pair(10, 63));
mp.insert(pair(52, 37));
mp.insert(pair(52, 38));//这个不会存进去
mp.insert(pair(100, 520));
//打印输出
display(mp);
//拷贝构造函数
mapmp2(mp);
display(mp2);
//赋值
mapmp3 = mp2;
display(mp3);
}
复制代码
结果:
代码如下:
//map的大小和交换
void test02() {
//默认构造函数
mapmp;
//给mp插数
mp.insert(pair(1, 23));
mp.insert(pair(66, 45));
mp.insert(pair(10, 63));
mp.insert(pair(52, 37));
mp.insert(pair(52, 38));//这个不会存进去
mp.insert(pair(100, 520));
//打印输出
display(mp);
//map是否为空
if (mp.empty()) {
cout << "mp为空!" << endl;
}
else {
cout << "mp不为空!" << endl;
cout << "mp容器的大小:" << mp.size() << endl;
}
mapmp2;
mp2.insert(pair(10, 90));
mp2.insert(pair(1, 77));
mp2.insert(pair(66, 15));
mp2.insert(pair(50, 67));
mp2.insert(pair(20, 9));
mp2.insert(pair(100, 666));
//交换
cout << "交换后:" << endl;
mp.swap(mp2);
display(mp);
}
复制代码
结果:
代码如下:
//map的插入和删除
void test03() {
//插入(四种插入)
mapmp;
//第一种
mp.insert(pair(10, 520));
//第二种
mp.insert(make_pair(21, 666));
//第三种
mp.insert(map::value_type(1, 999));
//第四种
mp[16] = 1314;
display(mp);
//删除
mp.erase(mp.begin());
display(mp);
mp.erase(21);
display(mp);
//清空
mp.clear();
//或者
//mp.erase(mp.begin(), mp.end());
display(mp);
}
复制代码
结果:
代码如下:
//map查找的统计
void test04() {
//默认构造函数
mapmp;
//给mp插数
mp.insert(pair(1, 23));
mp.insert(pair(66, 45));
mp.insert(pair(10, 63));
mp.insert(pair(52, 37));
mp.insert(pair(52, 38));//这个不会存进去
mp.insert(pair(100, 520));
//打印输出
display(mp);
//查找(创建一个迭代器来找key值)
map::iterator f = mp.find(66);
if (f != mp.end()) {
cout << "找到该元素!" << endl;
cout << "key:" << f->first << " value:" << f->second << endl;
}
else {
cout << "没找到!" << endl;
}
//统计(在map中的统计要么是0要么是1)
int cnt1 = mp.count(66);
int cnt2 = mp.count(60);
cout << "key=66的个数:" << cnt1 << endl;
cout << "key=60的个数:" << cnt2 << endl;
}
复制代码
结果:
仿函数代码:
//仿函数
class Compare {
public:
bool operator()(int a, int b)const {
return a > b;
}
};
复制代码
PS: 一定要加上const,这是VS2022的需求
测试代码:
//map排序
void test05() {
//默认构造函数
mapmp;
//给mp插数
mp.insert(pair(1, 23));
mp.insert(pair(66, 45));
mp.insert(pair(10, 63));
mp.insert(pair(52, 37));
mp.insert(pair(52, 38));//这个不会存进去
mp.insert(pair(100, 520));
//打印输出
display(mp);
//更改规则的map
mapmp2;
mp2.insert(make_pair(1, 23));
mp2.insert(make_pair(66, 45));
mp2.insert(make_pair(10, 63));
mp2.insert(make_pair(52, 37));
mp2.insert(make_pair(52, 38));//这个数不会被插入
mp2.insert(make_pair(100, 520));
//打印输出
for (map::iterator it1 = mp2.begin(); it1 != mp2.end(); it1++) {
cout << "key值:" << it1->first << " " << "value值:" << it1->second << endl;
}
}
复制代码
结果:
觉得好就点赞加收藏吧~