C++ 严格弱序

前言

  • 学习C++11遇到的重要的点。

什么是严格弱序

  • C++关联容器的有序容器对元素关键字的类型有要求,元素关键字的类型必须定义了严格序(stick weak ordering) ,以内置类型来说,C++都定义了“<”操作符,这就是一个严格弱序,而“<=”就不是一个严格弱序

表示与作用

  • a小于b:a < b

  • a大于b:a > b

  • a等于b:!(a < b) && !(a > b)

特性

  • 非自反性: 如果存在两个关键字,任何一个都不严格弱序于另一个,则这两个关键字是相等的,即comp(a, a)必须是false
  • 非对称性: 两个关键字不能同时严格弱序于对方,即如果comp(a, b)和comp(b, a)的结果必然相反
  • 传递性:如果a严格弱序于b,且b严格弱序于c,则a必须严格弱序于c,即如果comp(a, b)为true,comp(b, c)为true,那么comp(a, c)必然为true

问题

  • 有序关联容器不允许存在相同的关键字,在用compare函数判断时,会认为相同的关键字是不相等的,因此会将两个相同的关键字插入容器中,这个行为是未定义的
-------------本文结束感谢您的阅读-------------
谢谢你请我吃糖果!
0%