国内优秀网站案例,wordpress外链包装,网站后台系统访问,网站设计和网页设计STL 中关联容器内部的元素是排序的。STL 中的许多算法也涉及排序、查找。这些容器和算法都需要对元素进行比较#xff0c;有的比较是否相等#xff0c;有的比较元素大小。
在 STL 中#xff0c;默认情况下#xff0c;比较大小是通过运算符进行的#xff0c;和运算…STL 中关联容器内部的元素是排序的。STL 中的许多算法也涉及排序、查找。这些容器和算法都需要对元素进行比较有的比较是否相等有的比较元素大小。
在 STL 中默认情况下比较大小是通过运算符进行的和运算符无关。在STL中提到“大”、“小”的概念时以下三个说法是等价的 x 比 y 小。表达式xy为真。y 比 x 大。注意y比x大意味着xy为真而不是yx为真。yx的结果如何并不重要甚至yx是没定义的都没有关系。
在 STL 中x和y相等也往往不等价于xy为真。对于在未排序的区间上进行的算法如顺序查找算法 find查找过程中比较两个元素是否相等用的是运算符但是对于在排好序的区间上进行查找、合并等操作的算法来说x和y相等是与xy和yx同时为假等价的与运算符无关。看上去xy和yx同时为假就应该和xy为真等价其实不然。例如下面的 class A
class A
{int v;
public:bool operator (const A a)const {return false;}
};可以看到对任意两个类 A 的对象 x、yxy和yx都是为假的。也就是说对 STL 的关联容器和许多算法来说任意两个类 A 的对象都是相等的这与运算符的行为无关。
使用 STL 中的关联容器和许多算法时往往需要对运算符进行适当的重载使得这些容器和算法可以用运算符对所操作的元素进行比较。最好将运算符重载为全局函数因为在重载为成员函数时在有些编译器上会出错由其 STL 源代码的写法导致。