C++ STL之set学习笔记

1.set了解:set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构,在set中查找是使用二分查找。

2.set具备的两个特点:set中的元素都是排序好的 ;set中的元素都是唯一的,没有重复的

3.常用工具:

insert();           //在集合中插入元素
begin();            // 返回指向第一个元素的迭代器
end();              // 返回指向set中的结尾,end()中是一个随便的数
clear();            // 清除所有元素
count();            // 返回某个值元素的个数,由于set中无重复元素,则count返回的就是0,1;也就是用来判断有无某个元素
empty();            // 如果集合为空,返回true
erase();            //删除集合中某个元素
find();             //返回一个指向被查找到元素的迭代器
lower_bound();      //返回指向大于(或等于)某值的第一个元素的迭代器
upper_bound();      //返回大于某个值元素的迭代器
size();             //集合中元素的数目
max_size();         //返回集合能容纳的元素的最大限值
rbegin();           //返回指向集合中最后一个元素的反向迭代器
rend();             //返回指向集合中第一个元素的反向迭代器

insert()+begin()+end()+empty()+erase()+size()+max_size()

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <set>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     set<int>s;
10     set<int>::iterator it;
11     s.insert(1);
12     s.insert(2);
13     s.insert(3);
14     s.insert(4);
15     s.insert(1);
16 
17     for(it=s.begin(); it!=s.end(); it++){
18         printf("%d\n",*it);
19     }
20     
21     printf("set的size值为:%d\n",s.size());
22     printf("set的maxsize值为:%d\n",s.max_size());
23     printf("set中的第一个元素是:%d\n",*s.begin());
24 
25     it = s.end();
26     it--;
27     printf("set中的最后一个元素:%d\n",*it);
28 
29     s.erase(2);
30     it = s.end();
31     it--;
32     printf("set中的最后一个元素:%d\n",*it);
33 
34     s.erase(4);
35     it = s.end();
36     it--;
37     printf("set中的最后一个元素:%d\n",*it);
38 
39 
40     for(it=s.begin(); it!=s.end(); it++){
41         printf("%d\n",*it);
42     }
43     if( s.empty() ) printf("set为空\n");
44     else printf("set不为空\n");
45 
46     s.clear();
47     if( s.empty() ) printf("set为空\n");
48     else printf("set不为空\n");
49 
50     printf("set的size值为:%d\n",s.size());
51     printf("set的maxsize值为:%d\n",s.max_size());
52     return 0;
53 }

猜你喜欢

转载自www.cnblogs.com/wsy107316/p/12243790.html