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 函数,