1、关联容器内部的元素是从小到大排序的
注意:这里的从小到大中的大小可以是自定义的,比如设置为绝对值大的为大。没有自定义的情况下,按照缺省情况执行。
2、有些算法要求其操作的区间是从小到大排序的,称为“有序区间算法”
例:
- binary_search
3、有些算法会对区间进行从小到大排序,称为“排序算法”
例:
- sort
4、还有一些其他算法会用到“大”,“小”的概念
5、使用STL时,在缺省的情况下,以下三个说法等价:
- x比y小
- 表达式“x<y”为真
- y比x大
6有时,“x和y相等”等价于“x==y为真”
例:
- 在未排序的区间上进行的算法,如顺序查找find
- …
7、有时“x和y相等”等价于“x小于y和y小于x同时为假”
例:
- 有序区间算法,如binary_search
- 关联容器自身的成员函数find
- …
注意:关联容器自身有查找算法,不应该再使用其他的查找方法。
#include <iostream>
#include <algorithm>
using namespace std;
class A {
int v;
public:
A(int n):v(n) { }
bool operator < ( const A & a2) const
{
//必须为常量成员函数
cout << v << "<" << a2.v << "?" << endl;
return false;
}
bool operator ==(const A & a2) const
{
cout << v << "==" << a2.v << "?" << endl;
return v == a2.v;
}
};
int main()
{
A a [] ={ A(1),A(2),A(3),A(4),A(5) };
cout << binary_search(a,a+4,A(9)); //x<y 和y<x同时不成立,则x和y相等,这就是binary_search的工作原理
//折半查找
return 0;
}
/*
输出结果:
3<9?
2<9?
1<9?
9<1?
1
*/