【发布时间】:2019-03-20 13:23:12
【问题描述】:
如何创建一个数组,以便我可以访问元素 a[1000000]、a[1] 和 a[2],甚至不使用 1000000 的大小?
如果可能,请在C++ 中提供答案。
【问题讨论】:
-
这叫稀疏数组,STL没有实现。所以要么自己做,要么找一个图书馆。或者也许你实际上并不需要它,因为哈希映射可以以同样的方式使用。
-
为什么?你想做什么?您是在填充其他元素,还是只是某种练习?
-
看到我有一个长度为 N 的数组,我想计算其中每个元素的频率,其中 N
-
如果您想建立频率关联,一张地图(无论是否有序)可能会准确地为您提供所需的内容。如果您还需要对关联进行排序(即在构建地图之后,您希望显示前 10 个最频繁的),则需要进行部分排序,但标准库也有相应的例程。
-
@SahilSilare 如果代码是
count[arr[i]]++,那么数组count[]的每个 元素都需要一个初始值——比如0。所以在任何递增 之前整个数组被初始化/分配和访问。代替数组,代码可以使用unsigned *count = calloc(1000000, sizeof *count);并查看Why is malloc not “using up” the memory on my computer? 来“节省”内存。使用指向内存的指针比使用数组好吗?
标签: c++ c memory memory-management