五月标准::映射键地址值数
May std::map key address number of values?
这可能是
一个有点愚蠢的问题,但假设std::map
定义如下:
std::map<int, int> m;
有没有办法存储多个值并可供单个key
访问?
提问动机:
std::map
具有像 count()
和 equal_range()
这样的方法,它们将键作为参数获取,这种感觉是单个键可以指定多个值。
这些
方法的存在是为了提供与其他关联容器的通用接口,这些容器确实允许每个键有多个值(例如std::multimap
这正是您要查找的(。
这使得通常(即使用模板(实现算法比其他方式容易得多,并且以这种方式设计它不会丢失任何价值。
的确,在std::map
的情况下,count()
只能给你零或一(除非你使用透明键,这是另一壶鱼(。
C++20 将引入 std::map::contains()
,这或多或少是一种count() == 1
的检查——这似乎是为了解决人们的担忧,即函数count()
对于一个std::map
来说是一种奇怪的事情。
有没有办法存储多个值并可供单个
key
访问?
与std::map
不同,这些对象每个键只存储一个值,但std::multimap
可以存储每个键可变数量的值。
两种类型之间的相似之处(例如 std::map::count
,std::multimap::count
(是由于在STL容器之间建立了类似的接口。
No. std::map
设计为每个键一个值。如果希望一个键有多个值,则应使用 std::multimap
。
相关文章:
- 将布局映射到内存地址
- 无法从地址打开映射文件
- 当值是地址C 时,如何使用键使用映射值
- 分段错误:地址未映射/地址失败:(无)
- MFC 消息映射中的函数地址
- 五月标准::映射键地址值数
- 映射文件中成员结构的地址
- 映射中值类型的地址
- 在映射中插入地址时,新运算符重载会导致无限递归
- 如何使用C / C++映射Modbus寄存器地址
- C++:在映射中存储类对象(错误:获取类型为"Node"的临时对象的地址)
- 通过解析 ELF C++程序,将字符串文本的地址映射到字符串文本
- 如何为映射的交互器分配起始地址<对<长整,长整>,长整整>
- 进程如何访问不属于其虚拟地址空间的内存映射 IO 地址?
- 在虚拟地址空间中使用内存映射文件
- c++ boost MPI & threading - 序列化错误:地址未映射
- 映射两个矢量元素并得到EXC_BAD_ACCESS(代码= 1,地址= 0x0)错误
- "detects_simple_anagram"中的致命错误:地址 0x00000000 处的内存访问冲突:故障地址处没有映射
- 在地址映射区域的权限错误
- 从可执行文件中获取__TEXT和__DATA地址映射