目录
1.set和multiset容器
1.1构造和赋值
1.2交换和大小
1.3插入和删除
1.4统计和查找
1.5pair对组
1.6set和multiset的区别
1.7指定内置数据类型排序规则
1.8指定自定义数据类型排序规则
2.map和multimap容器
2.1构造和赋值
2.2交换和大小
2.3插入和删除
2.4统计和查找
2.5指定排序规则
1.set和multiset容器
set/multiset属于关联式容器,底层结构用二叉树实现的,所有元素在插入时会被自动排序
set/multiset的区别:
- set不允许容器中有重复元素,multiset允许
1.1构造和赋值
【构造函数】
【拷贝构造函数】
注意:set容器插入相同数据时,不会报错,只是插入失败
1.2交换和大小
【交换函数】
注意:交换的容器内存储的数据类型必须和原容器内存储的相同
【大小函数】
1.3插入和删除
【插入函数】
注意:set容器的insert在插入时返回pair对组,第一个位置为插入位置,第二个位置是bool值,代表插入是否成功
【删除函数】
1.4统计和查找
【统计个数函数】
//key为set容器中存储的元素值
【查找函数】
1.5pair对组
功能:成对出现的数据,利用对组,一次可以返回两个数据
【构造函数】
【访问函数】
first(); //第一个元素 second(); //第二个元素
1.6set和multiset的区别
区别:
- set不能插入重复数据,multiset可以
- set插入数据后,会返回是否插入成功
- multiset不会检测重复数据
1.7指定内置数据类型排序规则
set<int,默认规则> setNumber;
//仿函数
class myCopmare
{
public:
//仿函数返回值为bool值
bool operator()(int v1, int v2)
{
return v1 > v2; //降序
}
};
set<int, myCopmare> s; //降序排序
1.8指定自定义数据类型排序规则
与list类似
2.map和multimap容器
关联式容器,底层用二叉树实现
特点:
- map中所有元素都是pair
- 元素会根据key自动排序
- 可以根据key快速定位value
- pair中第一个是key,起到索引作用,第二个是value
区别:map不允许有重复key值(插入相同key值不报错,只是插入失败),multimap允许
2.1构造和赋值
【构造函数】
【赋值函数】
//举例
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));
2.2交换和大小
【交换函数】
注意:交换的容器内存储的数据类型必须和原容器内存储的相同
【大小函数】
2.3插入和删除
【插入函数】
注意:利用[ ]访问数据时,要确保key存在,若key不存在会创建key,将value为0的元素插入
//举例
map<int, int> m;
m.insert(pair<int, int>(1, 10));
m[2]=10; //first=2 second=10;
【删除函数】
2.4统计和查找
【统计函数】
【查找函数】
2.5指定排序规则
map<int,int,默认升序> m;
注意:是按照key来排序的
//举例
class myCopmare
{
public:
bool operator()(int v1, int v2)
{
return v1 > v2; //降序
}
};
map<int, int,myCopmare> m; //降序排序