c++ hashset的用法_C++中Set主要用法

简介

Set封装了C++中的集合,他的主要作用是排序和去重,我们来详细看下:

------------------------------------------------------------------------------------------------------------------------------珂爱的分割线------------------------------------------------------------------------------------------------------------------------------

头文件

#include

#include

在写代码的时候,必须写上这两个头文件中的一个还有using namespace std;,这样就可以定义set了。

#include

#include

using namespace std;

int main()

{

return 0;

}

定义

set S;

T:C++任意一个类型,如:int, char, string, STL里的也可以,比如set > s1; set > > s2;

S:你定义的变量名,以下都用s代替

------------------------------------------------------------------------------------------------------------------------------珂爱的分割线------------------------------------------------------------------------------------------------------------------------------

函数

链接炸了评论区找我(

返回set容器第一个元素的迭代器

用法:

s.begin();

返回指向容器中第一个元素的常量迭代器。

set容器中的所有迭代器都是常量迭代器(包括const_iterator和iterator成员类型)。它们不能用来修改它们所指向的内容,但可以正常地增加和减少(除非它们本身也是常量)。

如果容器为空,则返回的迭代器值不应被取消引用。 跟begin差不多(

没什么用(

用法:

s.cbegin();

set::cendC++11,慎用!

返回一个指向容器中结束元素的常量迭代器。 跟end差不多(

用法:

s.cend();

把当前集合(set)清空,让当前集合的大小为0

用法:

s.clear();

将在容器中x的个数返回,(count(x))

用法:

s.count(x);

顾名思义,反向开头(就是结尾),没什么用(

用法:

s.crbegin();

顾名思义,反向结尾(就是开头),没什么用(

用法:

s.crend();

就是insert

用法:

s.emplace(x);

在集合中插入新元素(如果唯一),并在插入位置上给出提示。这个新元素是使用arg作为其构造参数就地构造的。

只有在容器中没有其他元素与被放置的元素等效时才会进行插入(集合容器中的元素是唯一的)。

如果插入,这将有效地将容器大小增加一个。

位置中的值用作插入点的提示。尽管如此,元素仍将按照其内部比较对象描述的顺序插入到其相应的位置,但函数使用此提示开始搜索插入点,当实际插入点位于位置或接近该位置时,该过程会大大加快。

总结:最好别用(

用法:

bool类型,如果当前几何还有元素,返回true,否则返回false

用法

if(s.empty())

cout << "集合是空的" << endl;

else

cout << "集合有元素" << endl;

返回一个指针,当前容器的末尾

用法

set::iterator it = s.end();

删除一个元素或一个指针的元素

用法

std::set myset;

std::set::iterator it;

myset.erase (it);

myset.erase (40);

在容器中搜索等价于val的元素,如果找到,则返回迭代器,否则返回迭代器给set::end。

s.find(x);

插入一个元素,详细点上面这个就可以去官网看了

查找第一个大于或等于x的数字,找到返回该数字的地址,不存在则返回end。

查找第一个小于或等于x的数字,找到返回该数字的地址,不存在则返回end。

目前容器有过的最大容量

cout << s.max_size() << endl;

目前容器的容量

cout << s.size() << endl;

------------------------------------------------------------------------------------------------------------------------------珂爱的分割线------------------------------------------------------------------------------------------------------------------------------

遍历

遍历需要有迭代器iterator

#include

#include

using namespace std;

int main()

{

set s;

s.insert(1);

s.insert(1);

s.insert(4);

s.insert(5);

s.insert(1);

s.insert(4);

s.insert(1);

s.insert(9);

s.insert(1);

s.insert(9);

s.insert(8);

s.insert(1);

s.insert(0);

for(set::iterator it = s.begin(); it != s.end(); it++)

cout << *it << " ";

}

输出:

0 1 4 5 8 9

#include

#include

using namespace std;

int main()

{

set s;

s.insert('a');

s.insert('b');

s.insert('d');

s.insert('b');

s.insert('a');

s.insert('b');

s.insert('c');

s.insert('b');

s.insert('c');

s.insert('c');

s.insert('a');

s.insert('a');

s.insert('a');

for(set::iterator it = s.begin(); it != s.end(); it++)

cout << *it << " ";

}

输出:

a b c d

就可以用set,其实他大多是作为工具出现在题目里面,一般专门考这个的很少。

求评论QAQ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值