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

 

原文链接: https://www.cnblogs.com/deityde1127/p/11937377.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ vector 比较大小

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/306476

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午4:27
下一篇 2023年2月16日 上午4:28

相关推荐