1、set中的元素都是排好序的
2、set集合中没有重复的元素
常用操作:
begin() 返回set容器的第一个元素的地址
end() 返回set容器的最后一个元素地址
clear() 删除set容器中的所有的元素
empty() 判断set容器是否为空
max_size() 返回set容器可能包含的元素最大个数
size() 返回当前set容器中的元素个数
erase(it) 删除迭代器指针it处元素
insert(a) 插入某个元素
#include<stdio.h> #include<set> using namespace std; int main() { set<int>s; s.insert(3); s.insert(1); s.insert(2); s.insert(1); set<int>::iterator it; for(it=s.begin();it!=s.end();it++) //使用迭代器进行遍历 { printf("%d\n",*it); } return 0; } //输出结果 : 1 2 3 一共插入了4个数,但是集合中只有3个数并且是有序的,可见之前说过的set集合的两个特点,有序和不重复。
当set集合中的元素为结构体时,该结构体必须实现运算符‘<’的重载
#include<stdio.h> #include<set> #include<string> using namespace std; struct People { string name; int age; bool operator <(const People p) const //运算符重载 { return age<p.age; //按照年龄由小到大进行排序 } }; int main() { set<People>s; s.insert((People){"张三",14}); s.insert((People){"李四",16}); s.insert((People){"王二麻子",10}); set<People>::iterator it; for(it=s.begin();it!=s.end();it++) //使用迭代器进行遍历 { printf("姓名:%s 年龄:%d\n",(*it).name.c_str(),(*it).age); } return 0; } /* 输出结果 姓名:王二麻子 年龄:10 姓名:张三 年龄:14 姓名:李四 年龄:16 */
查找set种的数据
#include<stdio.h> #include<set> #include<iostream> using namespace std; int main() { set<int>s; s.insert(1); s.insert(3); s.insert(5); set<int>::iterator ite; //输出found ite=s.find(1); if(ite==s.end()) puts("not found"); else puts("found"); //输出not found ite=s.find(2); if(ite==s.end()) puts("not found"); else puts("found"); return 0; }
原文:https://www.cnblogs.com/jrfr/p/10353950.html