1. 程式人生 > >STL:set用法總結

STL:set用法總結

i++ sset strcpy code con ++ per 開始 turn

一:介紹

set是STL的關聯式容器,以紅黑樹(Red-Black Tree)作為底層數據結構。自動去重,保證每個元素唯一,並對數據進行排序。

命名空間為std,所屬頭文件為<set>

二:常用操作

容量:
a.set中實際數據的數據:set.size()
b.set中最大數據的數量:set.max_size()
c.判斷容器是否為空:set.empty()

修改:
a.插入數據:set.insert()
b.清空set元素:set.clear()
c.刪除指定元素:set.erase(it)

叠代器:
a.set開始指針:set.begin()
b.set尾部指針:set.end() 註:最後一個元素的下一個位置,類似為NULL,不是容器的最後一個元素

三:存儲

 1     //簡單存儲
 2     set<int> iSet;
 3     for (int i=0; i<10; i++)
 4     {
 5         iSet.insert(rand()%100);
 6     }
 7 
 8     //存儲結構體
 9     struct Student1
10     {
11         char name[32];
12         int     age;
13         bool operator<(const Student1& tmp) const{
14             if
(this->age < tmp.age) 15 return true; 16 return false; 17 } 18 }; 19 20 Student1 stu1; 21 strcpy(stu1.name, "woniu201"); 22 stu1.age = 32; 23 Student1 stu2; 24 strcpy(stu2.name, "beijing"); 25 stu2.age = 30; 26 27 set<Student1> sSet;
28 sSet.insert(stu1); 29 sSet.insert(stu2);

四:遍歷

1     for (set<int>::iterator it = iSet.begin(); it != iSet.end(); it++)
2     {
3         cout << *it << endl;
4     }

五:查找

1     set<int>::iterator it = find(iSet.begin(), iSet.end(), 24);
2     if (it != iSet.end())
3     {
4         cout << "found" << endl;
5     }
6     else
7     {
8         cout << "not found" << endl;
9     }

六:刪除

1     for (set<int>::iterator it = iSet.begin(); it != iSet.end(); it++)
2     {
3         if (*it == 24)
4         {
5             it = iSet.erase(it);
6             it--;
7         }
8     }

STL:set用法總結