zoukankan      html  css  js  c++  java
  • STL中的 “大”、“小”和 “相等”

    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
    */
    
  • 相关阅读:
    python中单例模式
    python中常用的内置方法
    面向对象之反射
    绑定方法与非绑定方法
    python多态与抽象类
    python的组合与封装
    面向对象之继承与派生
    面向对象之类与对象
    python模块与包
    数据结构与算法_语言和框架特性前瞻和bug修复
  • 原文地址:https://www.cnblogs.com/lasnitch/p/12764218.html
Copyright © 2011-2022 走看看