0

multimap以下のように使用します。

multimap<int, string> mm;
mm.insert(make_pair(1, "jack"));
mm.insert(make_pair(1, "jack"));
mm.insert(make_pair(1, "jack"));
mm.insert(make_pair(1, "joe"));
mm.insert(make_pair(2, "david"));
mm.insert(make_pair(2, "daniel"));
mm.insert(make_pair(3, "alex"));

for (multimap<int, string>::iterator itr = mm.begin(); itr != mm.end(); itr++)
{
    cout << "key: " << itr->first << ", value: " << itr->second << endl;
}

結果:

key: 1, value: jack
key: 1, value: jack
key: 1, value: jack
key: 1, value: joe
key: 2, value: david
key: 2, value: daniel
key: 3, value: alex

ご覧のとおり、キー1には 2 つの異なる値がありjoe、問題ありませんjack<1,"jack">しかし、コンテナーには 2 つの重複があります。

その重複したアイテムを取り除くにはどうすればよいですか? 私の要件を満たす標準コンテナはありますか? または、既存のコンテナをどのように組み合わせて目標を達成できますか (効率は非常に重要です)。

4

1 に答える 1

3

STL ではstd::pair、キー (または値) が複数の値の複合体であるコンテナーを作成するために使用できるため、次のようにmultimap変換できsetます。

set<pair<int, string> >

結果のコンテナーには、2 つの値の組み合わせごとに 1 つのエントリのみを含めることができます。

于 2012-11-20T17:14:06.080 に答える