欢迎光临散文网 会员登陆 & 注册

读书笔记《effective stl》item21: 总是让比较函数在等值的情况下返回false

2022-01-18 00:15 作者:LogByMax  | 我要投稿

因为相等的值从来都不会有前后顺序关系,所以对于相等的值,比较函数应始终返回false。

下面的例子展示了,如果对set使用less equal的比较方法会破坏set的性质。


#include <iostream>

#include <set>

using namespace std;

typedef set<int, less_equal<int>> lessEqualSet;

typedef set<int> normalSet;

void print_set_seq(string name,lessEqualSet les)

{

    cout << "\n" << name <<" : ";

    for (auto i = les.begin(); i != les.end(); ++i)

        cout << *i << " ";

}

void print_set_seq(string name,normalSet les)

{

    cout << "\n" << name <<" : ";

    for (auto i = les.begin(); i != les.end(); ++i)

        cout << *i << " ";

}

int main()

{

    //使用less equal的比较方法会破坏set的性质

    lessEqualSet s;

    s.insert(10);

    s.insert(2);

    s.insert(10);

    

    print_set_seq("this lessEqualSet contains", s);

    

    cout << "\n";

    

    normalSet ns;

    ns.insert(10);

    ns.insert(2);

    ns.insert(10);

    

    print_set_seq("this normalSet contains", ns);

    

}

=End=

读书笔记《effective stl》item21: 总是让比较函数在等值的情况下返回false的评论 (共 条)

分享到微博请遵守国家法律