持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
1map/ multimap容器
1.1 map基本概念
简介:
- map中所有元素都是pair
- pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)
- 所有元素都会根据元素的键值自动排序
本质:
- map/multimap属于关联式容器,底层结构是用二叉树实现。
优点:
- 可以根据key值快速找到value值
map和multimap区别:
- map不允许容器中有重复key值元素
- multimap允许容器中有重复key值元素
1.2 map构造和赋值
功能描述:
- 对map容器进行构造和赋值操作
函数原型:
构造:
map<T1, T2> mp;//map默认构造函数:map(const map &mp);//拷贝构造函数
赋值:
map& operator=(const map &mp);//重载等号操作符
示例:
#include <map>
void printMap(map<int,int>&m)
{
for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
{
cout << "key = " << it->first << " value = " << it->second << endl;
}
cout << endl;
}
void test01()
{
map<int,int>m; //默认构造
m.insert(pair<int, int>(1, 10));
m.insert(pair<int, int>(2, 20));
m.insert(pair<int, int>(3, 30));
printMap(m);
map<int, int>m2(m); //拷贝构造
printMap(m2);
map<int, int>m3;
m3 = m2; //赋值
printMap(m3);
}
int main() {
test01();
system("pause");
return 0;
}
总结:map中所有元素都是成对出现,插入数据时候要使用对组
1.3 补充set
总结一下,set最重要的几个功能:
1、判断在还是不在
2、去重
3、排序
二、set常用接口举例
1、排序+去重 2、插入元素的时候,元素已经存在的不插入 、构建键值对插入:pair insert ( const value_type& x )
在set中插入元素x,实际插入的是构成的键值对, 如果插入成功,返回(该元素在set中的位置,true) ,如果插入失败,说明x在set中已经存在,返回(x在set中的位 置,false).
4、iterator insert ( iterator position, const value_type& x)
在set的position位置插入x,实际插入的是构成的键值对,注意:position位置只是参考,x最终不一定在该位置。