std::multimap
キーとその値が同じ型である場合、意味はありますか?
実際のコードはもっと複雑ですが、たとえば、クラスがPoint
あり、そのタイプの類似オブジェクトを見つけたいとします。
bool
ComparePoints::operator()(Point* const p1, Point* const p2) const {
if (p1->x > p2->x) return false;
if (p1->x < p2->x) return true;
...
return false;
}
そのために with 比較関数を使用std::multimap
し、MultiMap::equal_range を使用してオブジェクトのグループを取得できます。
std::multimap<Point*, Point*, ComparePoints> pointsMap;
これは私にとってはうまくいきますが、値フィールドが冗長になっているように感じます。より良い解決策を探す必要がありますか?
編集:
オブジェクトからまったく同じオブジェクトにマッピングしています
pointsMap.insert(std::pair<Point*, Point*>(p, p));
値を冗長にするので、@johnが述べたように、代わりに std::multiset を使用する必要があります。