赞
踩
简介
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。