2 つの整数値 (x と y の位置など) で構成される単純なクラスをマップのキー値として追加したいのですが、そのためには < 演算子をオーバーロードする必要があると思いますが、何らかの理由で正しく取得できません. これがまさに私がキーとして押し込みたいものです:
struct position {
int x;
int y;
};
2 つの整数値 (x と y の位置など) で構成される単純なクラスをマップのキー値として追加したいのですが、そのためには < 演算子をオーバーロードする必要があると思いますが、何らかの理由で正しく取得できません. これがまさに私がキーとして押し込みたいものです:
struct position {
int x;
int y;
};
標準的な方法は、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);
これが通常の方法です。
bool operator<(position p, position q)
{
return p.x < q.x || (p.x == q.x && p.y < q.y);
}
によって必要とされる厳格な弱い順序付けを position に与えstd::map
ます。順序自体は少し恣意的ですが、通常は問題になりません。