c++ set集合的使用方法详解
set集合是c++ stl库中自带的一个容器,set具有以下两个特点:1、set中的元素都是排好序的2、set集合中没有重复的元素常用操作:begin() 返回set容器的第一个元素的地址end() 返回set容器的最后一个元素地址clear() 删除set容器中的所有的元素empty() 判断set容器是否为空max_size() ...
set集合是c++ stl库中自带的一个容器,set具有以下两个特点:
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
-
*/
可以看到结果是按照年龄由小到大的顺序排列。
1)由小到大
set<int,less<int>> M;
M.insert(1960);
M.insert(1952);
M.insert(1771);
M.insert(1812);
M.insert(1960);
M.insert(2000);
set<int,less<int>>::iterator N= M.begin();
cout<<"Number of elements "<<M.size()<<endl;
cout<<"The elements are:"<<endl;
while(N != M.end())
{
cout<<*N<<endl;
++N;
}
(2)由大到小:
set<int,greater<int>> M;
M.insert(1960);
M.insert(1952);
M.insert(1771);
M.insert(1812);
M.insert(1960);
M.insert(2000);
set<int,greater<int>>::iteratorN = M.begin();
cout<<"Number of elements "<<M.size()<<endl;
cout<<"The elements are:"<<endl;
while(N != M.end())
{
cout<<*N<<endl;
++N;
}
输出结果:
更多推荐
所有评论(0)