寫在前:
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 函數,