c语言中set 函数,C里边的STL里边的Set函数

本文介绍了C++ STL中的set和multiset容器,强调了它们在去重和排序上的功能。set用于存储唯一元素并自动排序,而multiset允许重复元素但保持排序。通过示例代码展示了如何插入元素、遍历集合以及自定义排序规则。此外,还列举了set的主要成员函数供读者参考。
摘要由CSDN通过智能技术生成

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值