STL之pair原始碼分析

2021-06-07 23:03:25 字數 1039 閱讀 5609

直接進入主題,請看pair的原始碼:

namespace std  //預設建構函式,用型別的預設建構函式初始化兩個資料成員

pair(const t1& a,const t2& b):first(a),second(b){}//建構函式,用a初始化first,用b初始化second

template//模板函式,拷貝建構函式

pair(const pair& p):first(p.first),second(p.second){}

}; template//模板函式,操作符過載之==

bool operator==(const pair&,const pair&);

template// 《符過載

bool operator

//還有!=,<=,>,>=省略了

}

很簡單吧,注意,struct預設許可權是public的,這麼以來所有成員都是public的,我們因此可以直接訪問pair中的個別值;

接下來再給大家帶來乙個便捷的函式,make_pair()

namespace std

}

下面是兩個具體的運用:

pair在標準函式庫用的特別多,尤其是map和multimap

STL原始碼分析之Vector

地球人都知道vector的查詢效率很高,插入和刪除的效率低下,容器會隨著元素的不斷增加自動增長,最近在看了stl原始碼之後,發現確實是這樣,下面是vector一些關鍵的函式.從這些函式可以看出插入和刪除的過程,以及容器自動增長的方式.兩個通過下標獲取元素的函式.reference operator ...

STL原始碼分析之vector

vector是序列容器的一種,分配的是一段連續的空間,所以它支援下標訪問,同時它另一特點是可以自行擴充空間,每次是以原大小兩倍來擴充,是另外配置的一塊空間,將原內容拷貝過去,所以當對vector的空間進行重新配置時,指向原vector的迭代器就失效了。下面分析它具體是怎麼實現的和熟悉下vector內...

STL原始碼分析之List

list是個環形雙向鍊錶,裡面的迭代器型別是bidirectional iterator tag,可以雙向移動,不想vector裡可以隨機訪問。同時刪除或新增結點對其他的迭代器無影響。list也有sort函式,我們知道sort函式只支援隨機訪問型迭代器,所有它的sort是自己另外宣告的。下面是原始碼...