c++ set集合的使用方法詳解
阿新 • • 發佈:2019-01-05
set集合是c++ stl庫中自帶的一個容器,set具有以下兩個特點:
1、set中的元素都是排好序的
2、set集合中沒有重複的元素
常用操作:
begin() 返回set容器的第一個元素的地址
end() 返回set容器的最後一個元素地址
clear() 刪除set容器中的所有的元素
empty() 判斷set容器是否為空
max_size() 返回set容器可能包含的元素最大個數
size() 返回當前set容器中的元素個數
erase(it) 刪除迭代器指標it處元素
insert(a) 插入某個元素
#include<stdio.h> #include<set> using namespace std; int main() { set<int>s; s.insert(3); s.insert(1); s.insert(2); s.insert(1); set<int>::iterator it; for(it=s.begin();it!=s.end();it++) //使用迭代器進行遍歷 { printf("%d\n",*it); } return 0; } //輸出結果 : 1 2 3 一共插入了4個數,但是集合中只有3個數並且是有序的,可見之前說過的set集合的兩個特點,有序和不重複。
當set集合中的元素為結構體時,該結構體必須實現運算子‘<’的過載
#include<stdio.h> #include<set> #include<string> using namespace std; struct People { string name; int age; bool operator <(const People p) const //運算子過載 { return age<p.age; //按照年齡由小到大進行排序 } }; int main() { set<People>s; s.insert((People){"張三",14}); s.insert((People){"李四",16}); s.insert((People){"王二麻子",10}); set<People>::iterator it; for(it=s.begin();it!=s.end();it++) //使用迭代器進行遍歷 { printf("姓名:%s 年齡:%d\n",(*it).name.c_str(),(*it).age); } return 0; } /* 輸出結果 姓名:王二麻子 年齡:10 姓名:張三 年齡:14 姓名:李四 年齡:16 */
可以看到結果是按照年齡由小到大的順序排列。