set函数的用法:
这是一个集合函数,这个函数可以处理很多的元素,这些元素可以去重,把相同的元素都去掉,剩下不一样的元素,而且还可以自动给这些元素来排序,从小到大的顺序来排序。
这里我们先来举个例子:
比如:
#include #include using namespace std; int main() { set a; a.insert(1); a.insert(9); a.insert(6); a.insert(6); set::iterator i=a.begin();//这里只能使用迭代器,因为对于set集合里边的元素是不能够想访问那个就能访问哪个的,他是像一个栈一样,需要从前往后一一访问,他并不是一个指针就可以跳跃性访问的。这里iterator是一个迭代器,申明方法只能是这样,当让写法是不一样的也行。 while(i!=a.end()) { cout<
输出就是1 6 9,这里把那个重复出现的6给去掉了。
下边再来想一个问题,能不能我不用去重的集合函数怎么写?当然这里严格意义上说,这个并不是集合,因为这个已经不满足集合的互异性的性质了,但是这里我们为了方便起见,权且叫他集合。。。那么这里就需要把那个set改换成multiset,代码如下:
#include #include using namespace std; int main() { multiset a;//改了这里. a.insert(1); a.insert(9); a.insert(6); a.insert(6); multiset::iterator i=a.begin();//改了这里 while(i!=a.end()) { cout<
输出结果:
1 6 6 9 下边可能有同学会问,这里能不能将这些元素从大到小来排序?
当然可以,STL是一个没有你想得到写不到的函数的集合,它里边所有的集合,只有你想不到,没有他做不到的。。。这里就是这样改,把seta,改成seta;下边来看一下这个: #include #include using namespace std; struct compare//注意这里很多的map,set函数之类的都是使用结构体,而像sort函数之类的是直接使用函数就行了 { bool operator()(int a,int b){//注意这里有2个括号,很容易遗忘,其那边一个只是用来重载括号的,后边一个是里边的参数 return a>b; } }; int main() { seta;//调用的时候是不一样的,需要注意下 int i=0; while(i++<10) a.insert(i); for(set::iterator j=a.begin();j!=a.end();j++)//还有这里,需要特别注意 cout<
输出10 9 8 7 6 5 4 3 2 1
下边就是直接复制别人的,大家可以去看下:
set的各成员函数列表如下:
c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器
c++ stl容器set成员函数:clear()--清除所有元素
c++ stl容器set成员函数:count()--返回某个值元素的个数
c++ stl容器set成员函数:empty()--如果集合为空,返回true
c++ stl容器set成员函数:end()--返回指向最后一个元素的迭代器
c++ stl容器set成员函数:equal_range()--返回集合中与给定值相等的上下限的两个迭代器
c++ stl容器set成员函数:erase()--删除集合中的元素
c++ stl容器set成员函数:find()--返回一个指向被查找到元素的迭代器
c++ stl容器set成员函数:get_allocator()--返回集合的分配器
c++ stl容器set成员函数:insert()--在集合中插入元素
c++ stl容器set成员函数:lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
c++ stl容器set成员函数:key_comp()--返回一个用于元素间值比较的函数
c++ stl容器set成员函数:max_size()--返回集合能容纳的元素的最大限值
c++ stl容器set成员函数:rbegin()--返回指向集合中最后一个元素的反向迭代器
c++ stl容器set成员函数:rend()--返回指向集合中第一个元素的反向迭代器
c++ stl容器set成员函数:size()--集合中元素的数目
c++ stl容器set成员函数:swap()--交换两个集合变量
c++ stl容器set成员函数:upper_bound()--返回大于某个值元素的迭代器
c++ stl容器set成员函数:value_comp()--返回一个用于比较元素间的值的函数
c++ stl集合set插入,遍历用法举例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include
#include
using
namespace
std;
//set插入元素操作
int
main()
{
//定义一个int型集合对象s,当前没有任何元素.由www.169it.com搜集整理
set<
int
> s;
s.insert(8);
//第一次插入8,可以插入
s.insert(1);
s.insert(12);
s.insert(6);
s.insert(8);
//第二次插入8,重复元素,不会插入
set<
int
>::iterator it;
//定义前向迭代器
//中序遍历集合中的所有元素
for
(it=s.begin();it!=s.end();it++)
cout<
system
(
"pause"
);
return
0;
}