Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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++ 分析std::map-为什么使用map/hashset/hastable会因为空间复杂性而被认为不好用?_C++_Dictionary_Stl_Stdmap_Space Complexity - Fatal编程技术网

C++ 分析std::map-为什么使用map/hashset/hastable会因为空间复杂性而被认为不好用?

C++ 分析std::map-为什么使用map/hashset/hastable会因为空间复杂性而被认为不好用?,c++,dictionary,stl,stdmap,space-complexity,C++,Dictionary,Stl,Stdmap,Space Complexity,我一直听说最好避免使用哈希表/映射,因为它们具有很大的空间复杂性。地图的空间复杂度与向量或N元素数组的空间复杂度有何不同?使用地图的替代方案是什么?当元素数量很大时,就空间复杂度而言,使用地图或向量是否同样糟糕?为什么?选择矢量或数组的指导原则是基于这样的假设,即地图中的项目数量通常非常小(几KB)。使用地图时,必须另外存储密钥。然后,verctor在内存中更小,因此对堆更友好。有效地使用堆内存可以大大减少运行时间 参考: 你还必须记住游泳的规则。我们只考虑大的N值。例如,术语O(30N)减少为

我一直听说最好避免使用哈希表/映射,因为它们具有很大的空间复杂性。地图的空间复杂度与向量或N元素数组的空间复杂度有何不同?使用地图的替代方案是什么?当元素数量很大时,就空间复杂度而言,使用地图或向量是否同样糟糕?为什么?

选择矢量或数组的指导原则是基于这样的假设,即地图中的项目数量通常非常小(几KB)。使用地图时,必须另外存储密钥。然后,verctor在内存中更小,因此对堆更友好。有效地使用堆内存可以大大减少运行时间

参考:


你还必须记住游泳的规则。我们只考虑大的N值。例如,术语O(30N)减少为O(N)。对于较大的N值,可以忽略30。但如果使用低N值,则“真实”复杂度比收敛值更重要。

您一定误解了什么。在映射中存储
N
元素需要
O(N)
空间,与向量
std::map
(可能)的每个元素开销完全相同,而
std::vector
没有。复杂性分析忽略了这样的常量因素。