我在RAM中有一个大数据,其中每个用户都有几个无符号短(2字节)值。它们的数量从0到256不等,但实际情况是,我有1200万用户只有1个值,600万用户有2个值,350万用户有3个值,等等,直到1个用户有60个值。
我需要选择一种内存、访问和修改效率高的数据类型。我想使用vector来实现这样的目的,但是空vector本身的大小是24字节。这对我的内存来说太大了。
现在我想使用std::array<>,因为它不分配任何额外的字节,除了里面的数据空间,即
sizeof(std::array<unsigned short, 3>) // 6UL
sizeof(std::vector<unsigned short>) + sizeof(unsigned short) * v.capacity() // 24UL + 6UL
问题是std::array必须在编译时指定大小. 你可以猜到,我做不到。是否有解决方案?我将用户存储在hast_tableNo。不同的尺寸恐怕不行!