Notice: Undefined index: in /data/phpspider/phplib/misc.function.php on line 226
C++ 与内存中的多重映射相比,集合映射的效率和查找时间_C++_Dictionary_Set_Multimap - Fatal编程技术网

C++ 与内存中的多重映射相比,集合映射的效率和查找时间

C++ 与内存中的多重映射相比,集合映射的效率和查找时间,c++,dictionary,set,multimap,C++,Dictionary,Set,Multimap,我想知道在什么情况下使用多重映射而不是集合映射 假设我有一堆元组,由。因此,它们的左边是0-9,右边是0-unlimited 我现在可以制作一张地图,并将元组的左侧作为键。该值将是具有相同左侧的所有元组的右侧的集合。这样,我将在左侧有log10查找时间,在无序设置的情况下,在右侧有“hash time”查找时间。 我不知道多重贴图在内部是如何工作的。。。所以,假设他们把所有的右边都放在一个向量上,然后对它进行二进制搜索,那么哈希tiem查找提供了一个好的has函数,这会更糟糕。。。但我不知道它们

我想知道在什么情况下使用多重映射而不是集合映射

假设我有一堆元组,由。因此,它们的左边是0-9,右边是0-unlimited

我现在可以制作一张地图,并将元组的左侧作为键。该值将是具有相同左侧的所有元组的右侧的集合。这样,我将在左侧有log10查找时间,在无序设置的情况下,在右侧有“hash time”查找时间。 我不知道多重贴图在内部是如何工作的。。。所以,假设他们把所有的右边都放在一个向量上,然后对它进行二进制搜索,那么哈希tiem查找提供了一个好的has函数,这会更糟糕。。。但我不知道它们是怎么工作的。那么,在这种情况下,什么是更好的选择?什么花费更少的时间,什么使用更少的内存

我知道已经有人问过这个问题,例如:

但我的问题更为具体,因为元组的左侧方差非常有限,而且该线程中的答案包含了很多关于多重映射实现的猜测

编辑
所以我可以举一个数字的例子。具体来说,我需要这个字符串,为解析器存储语法,解析器需要在左侧查找规则。

你能为你的问题添加一个例子吗?你想在容器中包含什么?就几个条目在这种情况下,在我看来,你最好使用std::vector s10;如果只使用0..9键,我看不到使用这样的设置有任何好处。但是,您可能只想创建某种类型的trie。。。我需要它是可伸缩的。我知道左边的方差总是比右边小,但方差可能大于10,不一定是整数。