zoukankan      html  css  js  c++  java
  • Effective STL 学习笔记:19 ~ 20

    Effective STL 学习笔记:19 ~ 20

    1 Item 19: 相等 (Equality) 与等价 (Equivalence)

    在 STL 中, 相等 (Equality) 用于 find 算法中,通常通过 (operator ==) 来体现。而 等价 (Equivalence) 则经常用于排序,通常用 (operator <) 来体现,等价的对象不一定相等,只要他们满足满足下面条件,二者即可视为等价:

    egin{cases} & !(w1 < w2)\ & !(w2 < w1) end{cases}

    2 Item 20: Specify Comparison Type for Associative containers of pointers

    对于存放指针的 Associative Containers 而言,如果我们不指定排序算法,则默认按照 指针 大小去排,对象指针我们无法控制,他们在容器中的排列顺序我们也就无法控制。如果我们需要指定其排序顺序,需自己指定 Comparison Type,例如:

    class StrLessFunctor
    {
    public:
        StrLessFunctor(){}
        virtual ~StrLessFunctor(){}
        bool operator()(const string* ps1, const string* ps2)
        {
            return *ps1 < *ps2;
        }
    };
    
    int main(int argc, char *argv[])
    {
        set<string*, StrLessFunctor> ssp;
        ssp.insert(new string("Banana"));
        ssp.insert(new string("Orange"));
        ssp.insert(new string("Apple"));
    
        for_each(ssp.begin(), ssp.end(), [](string* s){cout << *s << endl;});
        return 0;
    }
    

    构造 set 时候指定的第二个模板参试不是一个函数,而是一个类型 (Comparison Type), set 会用该类型来初始化出来一个用于 sort 的函数。

  • 相关阅读:
    ecshop中关于语言配置项的管理
    ecshop中猜你喜欢的原理
    CSS之Position详解(自cnblogs)
    包装类
    for循环的另一种写法
    date.calendar学习总结
    java对MySql数据访问
    java中对MySql的配置
    小程序在js里获取控件的两种方式
    样式一直没生效,发现css没加前面的小点!!!
  • 原文地址:https://www.cnblogs.com/yangyingchao/p/3406321.html
Copyright © 2011-2022 走看看