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 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python学习之旅

Python笔记(九):字符串操作

(一)    字符串 单引号、双引号、三重引号都可以作为字符串的开始和结束,三重引号可以直接输入多行字符串。三重引号可能一般是用来写多行注释。 ? (二)   ...

3997
来自专栏Python爬虫实战

Python指南:组合数据类型

Python提供了5中内置的序列类型:bytearray、bytes、list、str与tuple,序列类型支持成员关系操作符(in)、大小计算函数(len()...

1531
来自专栏cs

c++13.0 STL[stack,queue,set,dequeue]

set相关知识点: ---- set:集合,红黑树实现 特点: 1.0 内部的元素根据其值自动排序。 2.0 内部元素只能出现一次。 set数据结...

2396
来自专栏C/C++基础

字符数组的初始化与赋值

C语言中表示字符串有两种方式,数组和指针,字符数组是我们经常使用的方式。变量的定义包括指明变量所属类型、变量名称、分配空间以及初始化。可以看出,变量的初始化是变...

2572
来自专栏desperate633

LintCode 字符大小写排序题目分析代码

851
来自专栏深度学习思考者

C++常见问题(二)——虚函数、类与结构、引用与值传递

一 文件输入输出的方式 C++定义了ifsteam、ofstream和fstream 3种类型以用来支持文件的输入输出。 二 异常 异常就是程序运行时出...

1926
来自专栏desperate633

LintCode 字符大小写排序题目代码

小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。 样例 给出"abAcD",一个可能的答案为"acbAD"

811
来自专栏武军超python专栏

python组合数据类型及各种操作小总结

python中,一共有四种组合数据类型,他们分别是列表(list),元组(tuple),集合(set),字典(dict)。而这些数据类型分别都有什么作用?他们有...

1227
来自专栏PHP在线

PHP部分字符串函数汇总

我们大家知道无论哪种语言,字符串操作都是一个重要的基础,往往是简单而重要。PHP给我们提供了大量的字符串操作函数,功能强大,使用也比较简单,这里为大家总结九类字...

3476
来自专栏河湾欢儿的专栏

第五节正则

912

扫码关注云+社区

领取腾讯云代金券