【发布时间】:2020-04-30 21:02:08
【问题描述】:
我正在尝试找到一种在 C++ 中处理以下场景的好方法。
当我们在服务器上启动服务时,会根据数据库中的数据初始化如下的参数表。
ID, filed_1, field_2, .... , field 50
100abc, ***, ***, ...., ***
120def, ***, ***, ...., ***
...
...
500xyz, ***, ***, ..., ***
字段/列:大约 50 个。字段的数量和格式是固定的。所有字段的类型都是 int、double 或 char*(不是很长的 char*)。
Records/rows:最多200条。根据数据,每次记录的数量会有所不同。
ID 是唯一的。
在计算过程中,会以每秒500次的速度读取和更新参数表。 (我假设按 id 和字段名称搜索)
低延迟在系统中很重要。
在这种情况下最好使用什么数据结构?
如果有没有写(更新)操作可以大大提高效率的方法,也请分享信息。 我认为有一些解决方法可以不更新参数表。
非常感谢。
【问题讨论】:
-
对于固定数量的列,我会使用(一维)
std::vector<>。如果列数不同,可以使用std::vector<std::vector>代替。对于每一行:如果某些列具有固定类型,我将使用struct对行数据进行建模。struct可能包含一个std::vector<>(或std::array)成员,用于重复相同类型的列。如果您通常不知道某些列是否包含数字(带或不带小数点)或文本,那么我会将它们全部存储为std::string。std::any<std::string, double, int>可能是一个替代方案,但我不确定它是否值得。 -
抱歉,为什么是json 标签?如图所示,您的输入数据看起来像一个 CSV 文件:SO: How can I read and parse CSV files in C++?
-
谁在更新您的表格?为什么要每秒将其存储在磁盘上 500 次?使用内存映射消息传递解决方案不是更好吗?
标签: c++ json dictionary vector hash