具有唯一键的多映射

multimap with unique key

本文关键字:映射 一键 唯一      更新时间:2023-10-16

使用如下所示的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有两个不同的值joejack,没关系。但是容器中有两个重复的<1,"jack">

如何摆脱重复的项目? 是否有满足我要求的标准容器? 或者,我们如何组合现有的容器来实现我的目标(效率非常重要)?

在 STL 中,您可以使用 std::pair 创建一个容器,其键(或值)是多个值的组合,因此您可以将multimap转换为set

set<pair<int, string> >

生成的容器对于两个值的每个组合只能包含一个条目。