set中常用的方法
来源:互联网 发布:java专业基础课程 编辑:程序博客网 时间:2024/06/05 16:52
set中常用的方法
begin() ,返回set容器的第一个元素
end() ,返回set容器的最后一个元素
clear() ,删除set容器中的所有的元素
empty() ,判断set容器是否为空
max_size() ,返回set容器可能包含的元素最大个数
size() ,返回当前set容器中的元素个数
rbegin ,返回的值和end()相同
rend() ,返回的值和rbegin()相同
写一个程序练一练这几个简单操作吧:
1 #include <iostream> 2 #include <set> 3 4 using namespace std; 5 6 int main() 7 { 8 set<int> s; 9 s.insert(1);10 s.insert(2);11 s.insert(3);12 s.insert(1);13 cout<<"set 的 size 值为 :"<<s.size()<<endl;14 cout<<"set 的 maxsize的值为 :"<<s.max_size()<<endl;15 cout<<"set 中的第一个元素是 :"<<*s.begin()<<endl;16 cout<<"set 中的最后一个元素是:"<<*s.end()<<endl;17 s.clear();18 if(s.empty())19 {20 cout<<"set 为空 !!!"<<endl;21 }22 cout<<"set 的 size 值为 :"<<s.size()<<endl;23 cout<<"set 的 maxsize的值为 :"<<s.max_size()<<endl;24 return 0;25 }
运行结果:
小结:插入3之后虽然插入了一个1,但是我们发现set中最后一个值仍然是3哈,这就是set 。还要注意begin() 和 end()函数是不检查set是否为空的,使用前最好使用empty()检验一下set是否为空.
count() 用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。
示例代码:
1 #include <iostream> 2 #include <set> 3 4 using namespace std; 5 6 int main() 7 { 8 set<int> s; 9 s.insert(1);10 s.insert(2);11 s.insert(3);12 s.insert(1);13 cout<<"set 中 1 出现的次数是 :"<<s.count(1)<<endl;14 cout<<"set 中 4 出现的次数是 :"<<s.count(4)<<endl;15 return 0;16 }
运行结果:
equal_range() ,返回一对定位器,分别表示第一个大于或等于给定关键值的元素和 第一个大于给定关键值的元素,这个返回值是一个pair类型,如果这一对定位器中哪个返回失败,就会等于end()的值。具体这个有什么用途我还没遇到过~~~
示例代码:
1 #include <iostream> 2 #include <set> 3 4 using namespace std; 5 6 int main() 7 { 8 set<int> s; 9 set<int>::iterator iter;10 for(int i = 1 ; i <= 5; ++i)11 {12 s.insert(i);13 }14 for(iter = s.begin() ; iter != s.end() ; ++iter)15 {16 cout<<*iter<<" ";17 }18 cout<<endl;19 pair<set<int>::const_iterator,set<int>::const_iterator> pr;20 pr = s.equal_range(3);21 cout<<"第一个大于等于 3 的数是 :"<<*pr.first<<endl;22 cout<<"第一个大于 3的数是 : "<<*pr.second<<endl;23 return 0;24 }
运行结果:
erase(iterator) ,删除定位器iterator指向的值
erase(first,second),删除定位器first和second之间的值
erase(key_value),删除键值key_value的值
看看程序吧:
1 #include <iostream> 2 #include <set> 3 4 using namespace std; 5 6 int main() 7 { 8 set<int> s; 9 set<int>::const_iterator iter;10 set<int>::iterator first;11 set<int>::iterator second;12 for(int i = 1 ; i <= 10 ; ++i)13 {14 s.insert(i);15 }16 //第一种删除17 s.erase(s.begin());18 //第二种删除19 first = s.begin();20 second = s.begin();21 second++;22 second++;23 s.erase(first,second);24 //第三种删除25 s.erase(8);26 cout<<"删除后 set 中元素是 :";27 for(iter = s.begin() ; iter != s.end() ; ++iter)28 {29 cout<<*iter<<" ";30 }31 cout<<endl;32 return 0;33 }
运行结果:
小结:set中的删除操作是不进行任何的错误检查的,比如定位器的是否合法等等,所以用的时候自己一定要注意。
find() ,返回给定值值得定位器,如果没找到则返回end()。
示例代码:
1 #include <iostream> 2 #include <set> 3 4 using namespace std; 5 6 int main() 7 { 8 int a[] = {1,2,3}; 9 set<int> s(a,a+3);10 set<int>::iterator iter;11 if((iter = s.find(2)) != s.end())12 {13 cout<<*iter<<endl;14 }15 return 0;16 }
insert(key_value); 将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。
inset(first,second);将定位器first到second之间的元素插入到set中,返回值是void.
示例代码:
1 #include <iostream> 2 #include <set> 3 4 using namespace std; 5 6 int main() 7 { 8 int a[] = {1,2,3}; 9 set<int> s;10 set<int>::iterator iter;11 s.insert(a,a+3);12 for(iter = s.begin() ; iter != s.end() ; ++iter)13 {14 cout<<*iter<<" ";15 }16 cout<<endl;17 pair<set<int>::iterator,bool> pr;18 pr = s.insert(5);19 if(pr.second)20 {21 cout<<*pr.first<<endl;22 }23 return 0;24 }
运行结果:
lower_bound(key_value) ,返回第一个大于等于key_value的定位器
upper_bound(key_value),返回最后一个大于等于key_value的定位器
示例代码:
1 #include <iostream> 2 #include <set> 3 4 using namespace std; 5 6 int main() 7 { 8 set<int> s; 9 s.insert(1);10 s.insert(3);11 s.insert(4);12 cout<<*s.lower_bound(2)<<endl;13 cout<<*s.lower_bound(3)<<endl;14 cout<<*s.upper_bound(3)<<endl;15 return 0;16 }
运行结果:
- set中常用的方法
- set中常用的方法
- java中String、List、set的一些常用方法
- set容器的常用方法
- Set 集合以及Set集合的一些常用方法
- Python---set常用方法
- Set 集合常用方法
- oracle中常用的set命令
- Oracle sqlplus中常用的set命令
- Oracle sqlplus中常用的set命令
- python中tuple/list/dict/set常用方法
- DataBinding中get,set方法的使用
- Java中Set的contains()方法
- Java中Set的contains()方法
- oc中get set 方法的实现
- Java中Set的contains()方法
- Java中Set的contains()方法
- Java中Set的contains()方法
- setContentView(R.layout.activity_main) Error解决方法 .
- Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案
- 虚拟机下的CentOS联网问题
- java继承深入解析
- LeetCode -- Clone Graph
- set中常用的方法
- Linux 线程同步的三种方法
- 第十一周项目1-验证算法(1)层次遍历算法的验证
- #include中用双引号和用尖括号括起来头文件的区别
- hpuoj 1717: 感恩节KK专场——爬楼梯 (打表)
- ajax ssh 整合
- Tkinter实现Listbox单行多值
- 指令汇B新闻客户端开发(三) 下拉刷新
- Protel99se不能添加元件库 File is not recognized