直接進入主題,請看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是自己另外宣告的。下面是原始碼...