STL容器 set 使用方法
set
就是集合,可以以log2速度进行查找和插入。set内部是有序的,本质是一颗红黑树(RB树)。
使用方法
迭代器: set<int>::iterator it
开始迭代器指针 s.begin()
末尾迭代器指针 s.end() //指最后一个元素的下一个位置
反向迭代器指针,指向最后一个元素 s.rbegin()
反向迭代器指针,指向第一个元素前一个位置 s.rend()
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(1);
cout<<"set 的 size 值为 :"<<s.size()<<endl;
cout<<"set 的 maxsize的值为 :"<<s.max_size()<<endl;
cout<<"set 中的第一个元素是 :"<<*s.begin()<<endl;
cout<<"set 中的最后一个元素是:"<<*s.end()<<endl;
s.clear();
if(s.empty())
{
cout<<"set 为空 !!!"<<endl;
}
cout<<"set 的 size 值为 :"<<s.size()<<endl;
cout<<"set 的 maxsize的值为 :"<<s.max_size()<<endl;
return 0;
}
删除操作
erase(iterator) :删除定位器iterator指向的值
erase(first,second):删除定位器first和second之间的值
erase(key_value):删除键值key_value的值
查找操作
find(key_value):找到则返回定位器,没有找到则返回s.end()。
#include <iostream>
#include <set>
using namespace std;
int main()
{
int a[] = {1,2,3};
set<int> s(a,a+3);
set<int>::iterator iter;
if((iter = s.find(2)) != s.end())
{
cout<<*iter<<endl;
}
return 0;
}
lower_bound(key_value) ,返回第一个大于等于key_value的定位器
upper_bound(key_value),返回第一个大于key_value的定位器
越自律,越自由