使用下面的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
,有两个不同的值joe
和jack
,这没关系。但是容器中有两个重复的<1,"jack">
。
如何摆脱重复的项目?我的要求是否有标准容器?或者,我们如何结合现有容器来实现我的目标(效率非常重要)?
答案 0 :(得分:3)
在STL中,您可以使用std::pair
创建一个容器,其键(或值)是多个值的组合,因此您可以将multimap
转换为set
:< / p>
set<pair<int, string> >
结果容器只能包含两个值的每个组合的一个条目。