写在前:
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 函数,
原文链接: https://www.cnblogs.com/deityde1127/p/11937377.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/306476
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!