stl set常用操作

xiaoxiao2021-02-27  232

STL中的容器:vector封装数组,list封装了链表,map和set封装了二叉树等。

set是关联式容器(关联容器是通过键存取和读取元素、顺序容器通过元素在容器中的位置顺序存储和访问元素),set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。

set,multiset内部构造都是红黑树。

set常用操作:

插入操作: 1、insert(key_value);  将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。 2、inset(first,second); 将定位器first到second之间的元素插入到set中,返回值是void. int main() { int a[] = {1,2,3}; set<int> s; set<int>::iterator iter; s.insert(a,a+3); for(iter = s.begin() ; iter != s.end() ; ++iter) { cout<<*iter<<" "; } cout<<endl; pair<set<int>::iterator,bool> pr; pr = s.insert(5); if(pr.second) { cout<<*pr.first<<endl; } return 0; } 删除操作: erase(iterator)  ,删除定位器iterator指向的值 erase(first,second),删除定位器first和second之间的值 erase(key_value),删除键值key_value的值 int main() { set<int> s; set<int>::const_iterator iter; set<int>::iterator first; set<int>::iterator second; for(int i = 1 ; i <= 10 ; ++i) { s.insert(i); } //第一种删除 s.erase(s.begin()); //第二种删除 first = s.begin(); second = s.begin(); second++; second++; s.erase(first,second); //第三种删除 s.erase(8); cout<<"删除后 set 中元素是 :"; for(iter = s.begin() ; iter != s.end() ; ++iter) { cout<<*iter<<" "; } cout<<endl; return 0; } 查找操作: 第一种方法是用find() int main() { set<int> s; int n,x; cin>>n; s.insert(3); s.insert(4); s.insert(5); set<int>::iterator i; i=s.find(4); if(i==s.end()) cout<<"Not Found!"<<endl; else cout<<*it<<endl; return 0; }//输出:4 第二种方法是用count(),count是计数的,存在返回1,不存在返回0(S中插入1,2,3) int cnt = S.count(3); cout<<cnt<<endl;//输出1 cnt = S.count(5); cout<<cnt<<endl;//输出0 遍历操作: set<int>::iterator it; //定义前向迭代器 //中序遍历集合中的所有元素 for(it = s.begin(); it != s.end(); it++) { cout << *it << " "; } cout << endl; set<int>::reverse_iterator rit; //定义反向迭代器 //反向遍历集合中的所有元素 for(rit = s.rbegin(); rit != s.rend(); rit++) { cout << *rit << " "; } cout << endl; multiset: multiset中允许有重复元素。 其他操作: c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器 c++ stl容器set成员函数:clear()--清除所有元素 c++ stl容器set成员函数:count()--返回某个值元素的个数 c++ stl容器set成员函数:empty()--如果集合为空,返回true c++ stl容器set成员函数:end()--返回指向最后一个元素的迭代器 c++ stl容器set成员函数:equal_range()--返回集合中与给定值相等的上下限的两个迭代器 c++ stl容器set成员函数:erase()--删除集合中的元素 c++ stl容器set成员函数:find()--返回一个指向被查找到元素的迭代器 c++ stl容器set成员函数:get_allocator()--返回集合的分配器 c++ stl容器set成员函数:insert()--在集合中插入元素 c++ stl容器set成员函数:lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器 c++ stl容器set成员函数:key_comp()--返回一个用于元素间值比较的函数 c++ stl容器set成员函数:max_size()--返回集合能容纳的元素的最大限值 c++ stl容器set成员函数:rbegin()--返回指向集合中最后一个元素的反向迭代器 c++ stl容器set成员函数:rend()--返回指向集合中第一个元素的反向迭代器 c++ stl容器set成员函数:size()--集合中元素的数目 c++ stl容器set成员函数:swap()--交换两个集合变量 c++ stl容器set成员函数:upper_bound()--返回大于某个值元素的迭代器 c++ stl容器set成员函数:value_comp()--返回一个用于比较元素间的值的函数 参考:http://www.tuicool.com/articles/EnIZV3z
转载请注明原文地址: https://www.6miu.com/read-12463.html

最新回复(0)