#include <map>
#include <string>
#include <iostream>
using namespace std;
#include <functional>
map<short, bool, greater<short>> m_map;
其中greater是C++标准库中的一个结构体,其源码如下:
// TEMPLATE STRUCT greater
template<class _Ty = void>
struct greater
{ // functor for operator>
typedef _Ty first_argument_type;
typedef _Ty second_argument_type;
typedef bool result_type;
constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const
{ // apply operator> to operands
return (_Left > _Right);
}
};
从这个定义可以看出当key的数据类型为自定义结构体时,可以将上最上面代码中的
“greater<short>”
改为自定义结构体的名称,然后重新实现一下operator()函数,例如:
#include <map>
#include <string>
#include <iostream>
using namespace std;
//字符串长度长的排在前面
struct MyCompare {
bool operator()(const string& k1, const string& k2) {
return k1.length() > k2.length();
}
};
int main(){
map<string, int, MyCompare > myMap;
...
return 0;
}
|