将类作为STL映射键值插入

时间:2013-03-28 20:53:24

标签: c++

我想添加一个由两个整数值组成的简单类(如x和y位置)作为键值,如果是map,我想这样做我需要重载<运营商,但由于某种原因,我无法做到正确。这正是我想挤进的关键:

struct position {
 int x;
 int y;
};

2 个答案:

答案 0 :(得分:0)

标准方式是make_pair并将其插入地图:

map<int,position> ip;
position pos{1,8};
std::pair<int,position> pair=std::make_pair<int,position>(1,pos);
ip.insert(pair);

答案 1 :(得分:0)

这是通常的方法。

bool operator<(position p, position q)
{
    return p.x < q.x || (p.x == q.x && p.y < q.y);
}

它为位置提供严格弱排序,这是std::map所要求的。订单本身有点武断,但通常并不重要。