stl的set是乙個二叉排序樹,也稱為集合,其在stl內部實現是紅黑樹,能夠將元素預設從小到大排序或者是字典序排序。如果宣告的元素型別不是基本資料型別而是自定義的類要給它乙個比較器,類似於sort的compare。
#include
#include
#include
#include
using
namespace std;
class
mycompare1};
class
person
//string不可初始化為null,否則會拋異常
person
(int age, string name)
:age
(age)
,name
(name)
string getname (
)const
int getage (
)const
void setname (string name)
void setage (
int age)};
class
mycompare2
//年齡從大到小};
intmain()
//set預設公升序排序
if(s1.
find(2
)== s1.
end())
//查詢不到相應元素時返回end迭代器
cout <<
"----------------------------"
<< endl;
set s2;
s2.insert
(person(19
,"lilei"))
; s2.
insert
(person()
);s2.
insert
(person(22
,"hanmeimie"))
; s2.
insert
(person(12
,"xiaogang"))
; s2.
insert
(person(33
,"lq"))
;for
(set
::iterator it = s2.
begin()
; it != s2.
end(
); it++
)//set預設公升序排序
if(s2.
find
(person(19
,"lilei"))
== s2.
end())
//查詢不到相應元素時返回end迭代器
cout <<
"-----------------------------"
<< endl;
cout <<
">= : "
<< s2.
lower_bound
(person(22
,"lili"))
->
getname()
<< endl;
cout <<
"> : "
<< s2.
upper_bound
(person(22
,"lili"))
->
getname()
<< endl;
return0;
}
C set 容器使用
g set.cc std c 17 set 容器使用 set 內部是使用紅黑樹實現的,是一種平衡二叉樹,所以對其插入 查詢效率是非常高的,其時間複雜度是log2 n set是stl中一種標準關聯容器。它底層使用平衡的搜尋樹 紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和...
C vector容器使用
一 vector容器四種遍歷方式 include include include using namespace std void print vector v bool mycmpare const int a,const int b 定義三個結構體 struct cvector2 struct ...
c 容器使用
關聯容器 無序容器 unordered container 容器介面卡 container adapter 12章 只有array不提供rezise 因為大小固定 std array 於 固定大小的陣列 建立時必須指明大小 不能改變元素的個數,只能改變元素的值 元素的個數是array型別的一部分,s...