关于std::map的第三个参数

1、map的其中一个构造函数有第三个参数,可以直接定义map的key值得排序规则,

默认为std::less,即按“<”运算符进行排序

map mapWord = { { "father", 1 },{ "mother", 4 },{ "daughter", 5 } };

等价于:

map> mapWord2 = { { "father", 1 },{ "mother", 4 },{ "daughter", 5 } };

 

2、如果想把key值按从大到小的顺序排序,改为:

map> mapWord2 ;

 

3、使用比较函数也可以

bool compFunc(const string& a, const string& b)
{
  return a.compare(b) > 0;
}

map mapWord3;  //注意*号的存在。比较操作类型必须为函数指针类型

 

4、使用lambda表达式

auto fc = [](const string& str1, const string& str2) {return str1.compare(str2) > 0; };
map mapWord4;  //同样要使用使用函数指针

 

5、如果key的类型是自定义的类或结构体,可以重写“<运算符”

class A{

    ...

     bool operator <(const A& d)

    {

      return count > d.count; 
    }


    int count;

}

map int> mapA;  //关键字将会从大向小排列

 

转载于:https://www.cnblogs.com/pjl1119/p/8179780.html

你可能感兴趣的:(关于std::map的第三个参数)