具有唯一键的多映射
multimap with unique key
使用如下所示的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">
。
如何摆脱重复的项目? 是否有满足我要求的标准容器? 或者,我们如何组合现有的容器来实现我的目标(效率非常重要)?
在 STL 中,您可以使用 std::pair
创建一个容器,其键(或值)是多个值的组合,因此您可以将multimap
转换为set
:
set<pair<int, string> >
生成的容器对于两个值的每个组合只能包含一个条目。
相关文章:
- C++ 映射的键/值的用户自定义名称?
- 从文件读取到映射中,该映射将键作为整数,并将相应的值设置为设置
- 计算向量的std ::映射为键的值,并将双倍作为值
- 如何正确使用带有智能指针和自定义类的映射作为键和值
- 如何使用字符串指针访问映射的键
- 如何使用 boost 连接映射的键和值,特别是如果值是结构
- 当类包含 2D 数组时,如何将类用作映射的键
- 使用std ::映射的键的部分匹配
- 在方法中构造一个std:映射一次
- 多映射插入键类型信息 std::make_pair vs std::p air 构造函数
- 如何创建Google+Plus一键,同时已经使用GooglePlay游戏服务SDK for C++实现了排行榜
- 如何使用一个整数数组作为一个无序映射的键
- C++:映射,键的上一项
- 多映射错误(键类型为 std::string)
- 希望有效地克服 Boost.Process 间共享内存中映射中键类型之间的不匹配
- STL 允许使用指向不同映射的迭代器擦除映射的键/值?
- 使用结构作为映射的键和值.find() 操作给出错误
- 一键构建所有配置和平台
- 无序映射的键
- 使用批处理文件使用 Cmake & Msbuild (vs2010) 一键构建我的项目