概念
首先我们先了解一下,有序集合是一种关联式容器,键值对相等,里面的元素互不重复,且是有序的。底层用红黑树实现,对元素的增、删、查找是O(logn)时间复杂度。
下面是增、删、查找的一些基础操作。
c++中的有序集合
集合的定义使用
#include<set>
set<int> intSet;
set<srting> intString;
别忘了引入头文件set,我们首先定义了一个int的集合,和一个string的集合
对集合进行操作
1.插入
intSet.insert(5);
int集合中插入了一个常量5。
2.访问
注意在set中并没有对[]运算符进行重载,这个一定要注意,第一次学习时就把set和我们只能用find()方法去找一个值。
3.删除
inSet.erase(5);
stringSet.erase("hello");
删除直接使用erase方法。
4.修改
注意,set容器不允许改变一个元素的值,我们只能删除后再添加一个值。
intSet.erase(5);
intSet.insert(7)
这个代码实现了一个删除5,添加7的效果。
4.find函数精确查找元素
auto iter = inSet.find(5);
if(iter == inSet.end()){
cout<<"没找到"<<endl;
}
else{
cout<<"找到了<<*iter<< endl;
}
这里要注意find函数如果找到了就会返回该元素的迭代器,如果没有找到则会返回inSet.end()
5.用lower_bound或者upper_bound进行模糊查找
auto iter = inSet.upper_bound(5);
if(iter == inSet.end()){
cout << "没找到"<< endl;
}
else {
cout<< *iter<< endl;
lower_bound用于找大于等于参数值的第一个元素
upper_bound用于找大于参数值的第一个元素