C++中set的用法

set的特性是,所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。

我们常用set来查重。

set的各成员函数列表如下:

  1. begin()--返回指向第一个元素的迭代器

  2. clear()--清除所有元素

  3. count()--返回某个值元素的个数

  4. empty()--如果集合为空,返回true

  5. end()--返回指向最后一个元素的迭代器

  6. equal_range()--返回集合中与给定值相等的上下限的两个迭代器

  7. erase()--删除集合中的元素

  8. find()--返回一个指向被查找到元素的迭代器

  9. get_allocator()--返回集合的分配器

  10. insert()--在集合中插入元素

  11. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器

  12. key_comp()--返回一个用于元素间值比较的函数

  13. max_size()--返回集合能容纳的元素的最大限值

  14. rbegin()--返回指向集合中最后一个元素的反向迭代器

  15. rend()--返回指向集合中第一个元素的反向迭代器

  16. size()--集合中元素的数目

  17. swap()--交换两个集合变量

  18. upper_bound()--返回大于某个值元素的迭代器

  19. value_comp()--返回一个用于比较元素间的值的函数

下面我们主要讲set中遍历:

假设我们对一个数组进行排序,并且里面不能有重复的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <set>
using namespace std;

int main()
{
int a[11] ={20, 40, 32, 67, 40, 20, 89, 300, 400, 15};
set<int>map(a,a+10);
cout << map.size() << endl;

for (set<int>::iterator it=map.begin(); it!=map.end(); ++it) {
cout << *it << " ";
}
return 0;
}

大家可以做下面这道题练练手:

我是链接