ソートされたマルチマップを取得する方法を見つけようとしています。私の問題を解決できる2つの別々のコレクションデータ構造を提供するGuavaをチェックしました。印象的なのは、SortedSetMultimap が同一のキーを含むことができないことです。これは、Multimap が同じシンボル内にある間は Set であるためです。どうしたの?
編集
C++ では、私は Java で同様の機能を使用する方法を教えてくれることを願っています。
struct KeyCompare : public binary_function<pair<double,double>, pair<double,double>, bool>
{
bool operator()(const pair<double,double>& p1, const pair<double,double>& p2) const;
};
multimap<pair<double,double>, Object*, KeyCompare> _list;
.../...
KeyCompare key_compare;
while (( ! _list.empty() && key_compare(_list.begin()->first, k))) {
u = _list.begin()->second;
v = _list.begin()->first;
英語で: 値に含まれる何らかのオブジェクトを参照する double のペアであるキーを持つマップが必要です。マップには同一の複数のキーが含まれる可能性があるため (2 つの数値の同じペアが発生します)、これはマルチマップまたはバッグである必要があります。これが発生すると、要素をコレクションに挿入できます。最上位の要素を選択すると、それらのいずれかを返す必要があります (どちらでもかまいません)。コレクションを変更可能にする必要があるのは、反復ごとに、より少ない要素を選択してマップから削除するためです。