C++ STL之set的基本操作
时间:2022-04-26
本文章向大家介绍C++ STL之set的基本操作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
set是集合,虽然也存在键值和实值,不过两者根本就是同一个值,键值的设置完全就是为了满足红黑树的底层结构,set操作与map很像不过也有些不同。
1、 set迭代器与map的不同:
(1)set使用接引用运算符*取值,而map使用first和second取值。
(2)set的迭代器都是常量迭代器,不能用来修改所指向的元素,而map的迭代器是可以修改所指向元素的。
2、set没有重载[]运算符,而map中重载了,因为直接使用[]改变元素值会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素
3、构造的类型不一样,如同样实值为int类型分别为set<int>和map<type,int>(其中type可以为任意类型)
其他如插入、删除、查找等操作与map几乎一样
1 #include<iostream>
2 #include<set>
3 using namespace std;
4 void print(set<int>set_int)
5 {
6 set<int>::iterator it=set_int.begin();
7 for(;it!=set_int.end();it++)
8 {
9 cout<<*it<<' ';
10 }
11 cout<<endl;
12
13 }
14 int main()
15 {
16 int num[4]={1,2,3,4};
17 set<int> set_int(num,num+4);
18
19 //元素插入:
20 //1,插入value,返回pair配对对象,可以根据.second判断是否插入成功。(提示:value不能与set容器内元素重复)
21 //pair<iterator, bool> insert(value)
22 //2,在pos位置之前插入value,返回新元素位置,但不一定能插入成功
23 //iterator insert(&pos, value)
24 //3,将迭代区间[&first, &last)内所有的元素,插入到set容器
25 //void insert[&first, &last)
26 set_int.insert(5);
27 print(set_int);
28 set_int.insert(5);
29 print(set_int);
30
31 //元素删除
32 //1,size_type erase(value) 移除set容器内元素值为value的所有元素,返回移除的元素个数
33 //2,void erase(&pos) 移除pos位置上的元素,无返回值
34 //3,void erase(&first, &last) 移除迭代区间[&first, &last)内的元素,无返回值
35 //4,void clear(), 移除set容器内所有元素
36 set_int.erase(3);
37 print(set_int);
38
39 //元素查找
40 //count(value)返回set对象内元素值为value的元素个数
41 //iterator find(value)返回value所在位置,找不到value将返回end()
42 //lower_bound(value),upper_bound(value), equal_range(value)
43 set<int>::iterator it;
44 it=set_int.find(5);
45 cout<<*it<<endl;
46 return 0;
47 }
- 多迪技术总监揭秘:前端工程师主要做什么?前景怎么样?
- c#:Reflector+Reflexil 修改编译后的dll/exe文件
- testNG java.net.SocketException: Software caused connection abort: socket write error
- MyBatis.Net 学习手记
- 基于JavaScript 声明全局变量的三种方式详解
- 网页基础篇之如何制作简单的静态网页
- Mybatis.Net 整合 ODP.NET Managed
- 通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement
- 知道这几点,用微信小程序留住海量客户不是问题
- C#:DataTable映射成Model
- jenkins 多选框
- Oracle:ODP.NET Managed 小试牛刀
- C#:Func的同步、异步调用
- Python之路-day6
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法