STL中set的学习

今天我学习了STL中set的简单用法,set和map一样是一个用平衡二叉树写的模板,
map可以有两个或多这个只配对,而set只有一个,当你只存放一个元素的时候,
可以考虑用set,他的有点和map一样,查找很快。这是在网上看到的牛人学的我就copy过来了

再次感谢!

View Code
1 #include <iostream>
2 #include<set>
3  using namespace std;
4 int main()
5 {
6 int i,n,t;
7 set<int> st1; //创建一个int类型的set
8 set<int>::iterator it1; //创建一个他对应的迭代器
9
10 //empty是判断他是否为空,而且如果要判断空,最好用这个来判断
11 //如果为空返回true
12 if (st1.empty()) //判断空,如果是空,则输出empty
13 {
14 cout << "empty\n";
15 }
16 //查找数据,find。返回值是找到的情况的迭代器,如果没有找到,
17 //迭代器只想end,如果找到,为找到的数据,所以这里一定要先
18 //判断一下是否找到数据了。
19 it1 = st1.find(40); //查找数据
20 if (it1 != st1.end()) //如果找到就输出数据
21 {
22 cout << *it1 << endl;
23 }
24
25 //插入数据。
26 st1.insert(10); //插入数据
27 st1.insert(30);
28 st1.insert(20);
29 st1.insert(40);
30 cin>>n;
31 for(i=1;i<=n;i++)
32 {
33 cin>>t;
34 st1.insert(t);
35 }
36 //遍历数据,用迭代器遍历数据
37 for (it1 = st1.begin(); it1 != st1.end(); ++it1)
38 {
39 cout << *it1 << endl;
40 }
41
42 //因为开始没有40这个元素,所以找不到,现在插入了,再
43 //寻找一下。呵呵,找到了。
44 it1 = st1.find(40); //查找数据
45 if (it1 != st1.end()) //如果找到就输出数据
46 {
47 cout << *it1 << endl;
48 }
49
50 //删除数据这里返回的是删除的个数。在这里当然是1咯
51 size_t kk = st1.erase(40);
52 cout << kk << endl;
53
54 //清除全部数据。
55 st1.clear();
56 return 0;
57 }
posted @ 2011-07-11 10:39  我们一直在努力  阅读(314)  评论(1编辑  收藏  举报