Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ May std::映射键地址值的数目?_C++ - Fatal编程技术网

C++ May std::映射键地址值的数目?

C++ May std::映射键地址值的数目?,c++,C++,这可能有点愚蠢,但假设std::map定义如下: std::map<int, int> m; std::map m; 是否有任何方法可以存储多个值并可通过单个键访问 提问动机: std::map有像count()和equal_range()这样的方法,它们获取一个键作为参数,这给人一种感觉,一个键可以指定多个值。否。std::map被设计为每个键有一个值。 如果您希望一个键有多个值,那么应该使用std::multimap这些方法,以便提供与其他关联容器的公共接口,这些容器允许每

这可能有点愚蠢,但假设
std::map
定义如下:

 std::map<int, int> m;
std::map m;
是否有任何方法可以存储多个值并可通过单个
键访问

提问动机:


std::map
有像
count()
equal_range()
这样的方法,它们获取一个键作为参数,这给人一种感觉,一个键可以指定多个值。

否。
std::map
被设计为每个键有一个值。
如果您希望一个键有多个值,那么应该使用
std::multimap

这些方法,以便提供与其他关联容器的公共接口,这些容器允许每个键有多个值(例如,您正在寻找的正是这些值)

这使得一般性地实现算法(即使用模板)比其他方式容易得多,并且以这种方式设计算法不会丢失任何有价值的东西

的确,在的情况下,
count()
只能为您提供零或一个(除非您使用的是透明密钥,这是另一回事)

C++20将引入,这或多或少是一个检查
count()==1
-这似乎是为了解决函数
count()
对于
std::map
来说是一种奇怪的东西

是否有任何方法可以存储多个值并可通过单个
键访问

不是使用
std::map
,这些对象每个键只存储一个值,但每个键可以存储可变数量的值

这两种类型之间的相似性(例如,
std::map::count
std::multimap::count
)是由于在STL容器之间建立了相似的接口