STL原始碼分析set

2021-08-07 18:03:31 字數 1336 閱讀 5824

#include

#include

using

namespace

std;

int main()

; set

iset(ia, ia + 5);

cout

<< "size="

<< iset.size() << endl;

cout

<< "3 count="

<< iset.count(3) << endl;

iset.insert(3);

cout

<< "size="

<< iset.size() << endl;

cout

<< "3 count="

<< iset.count(3) << endl;

iset.insert(5);

cout

<< "size="

<< iset.size() << endl;

cout

<< "3 count="

<< iset.count(3) << endl;

iset.erase(1);

cout

<< "size="

<< iset.size() << endl;

cout

<< "3 count="

<< iset.count(3) << endl;

cout

<< "1 count="

<< iset.count(1) << endl;

set::iterator ite1 = iset.begin();

set::iterator ite2 = iset.end();

for (; ite1 != ite2; ++ite1)

cout

<< *ite1;

cout

<< endl;

//使用stl演算法find()來尋找元素,可以有效運作,但不是好辦法

ite1 = find(iset.begin(), iset.end(), 3);

if (ite1 != iset.end())

cout

<< "3 found"

<< endl;

//面對關聯式容器,應該使用提供的find函式來搜尋元素,會比使用stl演算法的find()更有效率,因為stl演算法find()只是循序搜尋

ite1 = iset.find(3);

if (ite1 != iset.end())

cout

<< "3 found"

<< endl;

}

STL原始碼分析 List

鍊錶是一種線性表,但不會按照線性的順序儲存。鍊錶每次插入和刪除乙個元素,只配置或者釋放乙個元素空間,對於任何位置的元素的插入或者刪除,list永遠是常量時間複雜度。template struct listnode 節點物件包含兩個節點物件指標,分別指向前乙個節點和後乙個節點,還有乙個節點物件存放的資...

STL原始碼分析 string

從定義可知,string其實是base string的特化類,string使用預設的記憶體分配器 stl default allocator chart template class alloc stl default allocator chart class basic string typed...

STL原始碼分析 bitset

bitsetbitset中stl中用於表示點陣圖的容器,它支援讀寫特定bit 從整數或字串生成bitset物件。bitset大小通過模板引數指定,一旦編譯器確定便無法變更,這一點與vector有差異。bitset是 base bitset的派生類。base bitset中包含乙個長度 nw,型別un...