Vector容器過載運算子原始碼解析

2021-10-03 03:01:40 字數 958 閱讀 6562

vector容器是特別有用的工具,可以完美取代陣列,底層是基於陣列實現的。這裡主要介紹它的過載運算子==,該運算子可以實現快速判斷兩個陣列是否是一樣的。具體實現,如下**:

判斷兩個陣列是一樣的,要滿足兩個條件:①兩個vector容器的大小要一樣 ②固定位置上的值要一樣

具體運用:

//stl_vector.h

template inline bool operator==(const vector& x, const vector& y)

//stl_algobase.h

template inline bool equal(inputiterator1 first1, inputiterator1 last1,

inputiterator2 first2)

《過載運算子的比較過程:依次比較陣列中儲存的元素的值

①若第乙個陣列的值小於第二個陣列的值,返回true;反之,若小於,則返回false。例如[1, 2, 3] 和 [2, 3, 4] ,返回true

②若前面出現的元素的值都相等;若第乙個陣列的長度小於第二個陣列的長度,則返回true;否則返回false

實現的原始碼如下:

//stl_vector.h

template inline bool operator<(const vector& x, const vector& y)

//stl_algobase.h

template bool lexicographical_compare(inputiterator1 first1, inputiterator1 last1,

inputiterator2 first2, inputiterator2 last2)

return first1 == last1 && first2 != last2;

}

[1]《stl3.0原始碼》  

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...

過載運算子

1.當乙個過載的運算子是成員函式時,this繫結到左側運算物件。成員運算子函式的引數比運算物件的數量少乙個。非成員函式呼叫等價於 data1 data2 普通表示式 operator data1,data2 等價的函式呼叫成員函式呼叫等價於 data1 data2 普通表示式 data1.opera...