小编Nic*_*ick的帖子

为什么std :: set容器使用的内存比其数据大小多得多?

例如,我们有10 ^ 7个32位整数.将这些整数存储在数组中的内存使用量为32*10 ^ 7/8 = 40MB.但是,将10 ^ 7个32位整数插入到一个集合中需要超过300MB的内存.码:

#include <iostream>
#include <set>

int main(int argc, const char * argv[]) {
    std::set<int> aa;
    for (int i = 0; i < 10000000; i++)
        aa.insert(i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

像其他容器map,unordered_set需要用类似的测试甚至更多的内存.我知道该集是用红黑树实现的,但数据结构本身并不能解释高内存使用率.

我想知道这5到8倍的原始数据内存使用背后的原因,以及更高内存效率集的一些解决方法/替代方案.

c++ memory set

0
推荐指数
1
解决办法
83
查看次数

标签 统计

c++ ×1

memory ×1

set ×1