c++ - 是否可以使用 std::array 作为 hash_table 值,但大小不同
问题描述
我在 RAM 中有大量数据,其中每个用户都有几个无符号短(2 字节)值。它们的数量从 0 到 256 不等,但实际情况是我有 1200 万用户只有 1 个值,6M 有 2,3.5M 有 3 等等。最多 1 个用户有 60 个值。
我需要选择一种对内存、访问和修改有效的数据类型。我想为此目的使用向量,但空向量本身的大小是 24 字节。这对我的 RAM 来说太多了。
现在我想使用std::array<>,因为除了里面的数据空间,它不分配任何额外的字节,即
sizeof(std::array<unsigned short, 3>) // 6UL
sizeof(std::vector<unsigned short>) + sizeof(unsigned short) * v.capacity() // 24UL + 6UL
问题是std::array 必须在 compile time 指定大小。正如你可能猜到的,我做不到。有解决方法吗?我将我的用户存储在 hast_table<unsigned int, T> 中。例如,我可以为每个键存储不同大小的数组吗?
解决方案
不,恐怕它不适用于不同的尺寸!
推荐阅读
- asp-classic - W3 Jmail 不工作(ActiveX 组件无法创建对象)
- sql - 从给定范围中选择最小值
- amazon-web-services - 到 API GW Authorizer 的 Cognito 回调令牌
- c# - 无法安装 .net 框架
- tensorflow - 获取 tfhub ALBERT 的词汇表
- nestjs - TypeORM 实体关系似乎不起作用
- python - 如何在python中制作动画堆积条形图
- reactjs - 使用 React Material 使表格适合页面
- java - 遍历 for 循环:为什么我的第一个 if 语句不运行?
- node.js - 将同一组件的功能分离到不同的文件中