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容器之间建立了相似的接口