Vic*_*let 19

您可以使用任何类型作为映射键,只要它实现了operator<(加上存储在容器中的值的通常的复制和分配要求).

例如:

struct example { int x; }

bool operator < (const example &l, const example &r) { return l.x < r.x; }

std::map<example, int> values;
Run Code Online (Sandbox Code Playgroud)

或者,您可以提供比较函数作为地图模板的第三个参数,而不是定义operator<.这里有更多细节(参数Compare).

  • "只要它实现了一个运算符<" - 或者该类型的`std :: less`专门化.`map`默认使用`less`,默认情况下`less`使用`operator <`,因此有两条路径. (2认同)