C++ vector 比較大小


寫在前:

vector 是可以直接 進行比較。

vector 默認提供的   operator< 內使用了  std::lexicographical_compare  進行比較,

operator> 則非operator<,依賴operator<實現。

簡單說,即 比較兩個vector上的, 每個位置上的字母 ,當發現不同的且字典序小的,擁有該字母的vector判定為小。

 

但,該方法 不是 嚴格弱序的,即 vector 無法作為  std::map.find() 的 key值,無法滿足 a1<a2, a2<a3-->a1<a3的場景。

補充:std::map.find()使用 key 值的 兩次 operator< 實現, 當 !(a<b)&&!(b<a)時,認為a==b.

可以使用 std::find(), 因為 該方法 使用 key 值的 operator== 實現。

不推薦使用 vector的 <>,  常見是 == ,!=

 

當vector 的比較大小時, 如果期待 嚴格弱序, 那么  繼承std::<數據類型>vector, 重載operator< , 

即-->字典序+長度 +compare 實現, 。

即-->可直接調用 std::__lexicographical_compare_impl ,然后重寫 最后一個參 compareable 函數,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM