文章目录
map和multimap容器
- 前言:
- map中的元素都是key=value对
- 元素会自动根据key来排序,同样是通过二叉树实现的
- 优点:可通过key值快速找到value值

一、map容器构造和赋值
#include <map>
void traversingMap(map<int, char>& m)
{
for (map<int, char>::iterator it = m.begin(); it != m.end(); it++)
{
cout << it->first << " " << it->second << endl;
}
}
void test()
{
map<int, char> m1;
m1.insert(pair<int, char>(97, 'a'));
m1.insert(pair<int, char>(100, 'd'));
m1.insert(pair<int, char>(98, 'b'));
traversingMap(m1);
map<int, char> m2(m1);
map<int, char> m3 = m1;
traversingMap(m2);
traversingMap(m3);
}
int main()
{
test();
return 0;
}
二、map容器的大小和交换
map容器的大小和交换
size, empty, swap
三、map容器插入和删除
#include <map>
void traversingMap(map<int, char>& m)
{
for (map<int, char>::iterator it = m.begin(); it != m.end(); it++)
{
cout << it->first << " " << it->second << endl;
}
cout << endl;
}
void test()
{
map<int, char> m1;
m1.insert(pair<int, char>(97, 'a'));
m1.insert(make_pair(98, 'b'));
m1.insert(map<int, char>::value_type(100, 'd'));
traversingMap(m1);
map<int, char> m2 = m1;
m2.erase(m2.begin());
traversingMap(m2);
m2.erase(100);
traversingMap(m2);
m2.clear();
}
int main()
{
test();
return 0;
}
四、map容器查找和统计
void test()
{
map<int, char> m1;
m1.insert(make_pair(97, 'a'));
m1.insert(make_pair(99, 'c'));
m1.insert(pair<int, char>(98, 'b'));
traversingMap(m1);
if (m1.find(97) == m1.end())
cout << "没找到\n";
else
cout << "找到了\n";
int num = m1.count(98);
cout << num << endl;
}
int main()
{
test();
return 0;
}
五、修改map容器默认排序规则
#include <map>
class reverseSort
{
public:
bool operator()(int v1, int v2) const
{
return v1 > v2;
}
};
void traversingMap(map<int, char>& m)
{
for (map<int, char>::iterator it = m.begin(); it != m.end(); it++)
{
cout << it->first << " " << it->second << endl;
}
cout << endl;
}
void test()
{
map<int, char> m1;
m1.insert(make_pair(97, 'a'));
m1.insert(map<int, char>::value_type(101, 'e'));
m1.insert(pair<int, char>(98, 'b'));
traversingMap(m1);
map<int, char, reverseSort> m2;
m2.insert(make_pair(97, 'a'));
m2.insert(map<int, char>::value_type(101, 'e'));
m2.insert(pair<int, char>(98, 'b'));
for (map<int, char>::iterator it = m2.begin(); it != m2.end(); it++)
{
cout << it->first << " " << it->second << endl;
}
cout << endl;
}
int main()
{
test();
return 0;
}