讀書筆記《effective stl》item21: 總是讓比較函數(shù)在等值的情況下返回false
因?yàn)橄嗟鹊闹祻膩矶疾粫?huì)有前后順序關(guān)系,所以對(duì)于相等的值,比較函數(shù)應(yīng)始終返回false。
下面的例子展示了,如果對(duì)set使用less equal的比較方法會(huì)破壞set的性質(zhì)。
#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的比較方法會(huì)破壞set的性質(zhì)
? ? 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=