STL——map/multimap

简介:

  • map中所有元素都是pair

  • pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)

  • 所有元素都会根据元素的键值自动排序

 

本质:

  • map/multimap属于关联式容器,底层结构是用二叉树实现。

 

优点:

  • 可以根据key值快速找到value值

 

map和multimap区别

  • map不允许容器中有重复key值元素

  • multimap允许容器中有重复key值元素

map构造和赋值

map<T1,T2> mp;          //默认构造函数
map(const map &mp); //拷贝构造函数
map& operator=(const map&mp); //重载等号赋值运算符
void PrintMap(map<int, int>& a)
{
for (map<int, int>::iterator begin = a.begin(); begin != a.end(); begin++)
{
cout << begin->first << begin->second << endl;
}
}
void test02()
{
map<int, int>m1;
m1.insert(pair<int, int>(1, 10));
m1.insert(pair<int, int>(2, 20));
m1.insert(pair<int, int>(3, 30));
PrintMap(m1);

map<int, int>m2(m1);

map<int, int>m3;
m3 = m1;
}
int main()
{
test02();
return 0;
}

 

map的插入和删除

insert(elem)    ;需要成对插入才行
clear()
erase(pos) ;删除pos迭代器指向的元素
erase(beg,end)
erase(key) ;//删除值为key的元素

map大小和交换

size();返回元素数目
empty();判断是否为空
swap(mp);交换

map查找和排序

find(key);//查找key是否存在,如果存在返回迭代器,不存在返回.end()
count(key); 统计key元素个数