#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...