我是C ++的新手,需要存储数据集。数据集如下所示
id | time | value
01 | 1 | 1
01 | 2 | 0
01 | 3 | 1
01 | 4 | 0
01 | 5 | 1
02 | 1 | 2
02 | 2 | 3
02 | 3 | 7
02 | 4 | 9
02 | 5 | 5
我希望能够通过id
或time
搜索数据,即
GetValueByID(data, '01')
# id | time | value
# 01 | 1 | 1
# 01 | 2 | 0
# 01 | 3 | 1
# 01 | 4 | 0
# 01 | 5 | 1
GetValueByID(data, '2')
# id | time | value
# 01 | 2 | 0
# 02 | 2 | 3
这样做最有效的内存方式是什么? 谢谢!
答案 0 :(得分:0)
最内存有效的方法是创建一个具有ID,时间和值成员的类,然后使用该类的std::vector
。
对于运行时效率,您希望创建一个索引表或std::map
,其中包含搜索关键字段和向量中项目的索引。为ID创建一个映射,为Time字段创建另一个映射。这是数据库表的常用方法。
编辑1:重复密钥
如果关键字段是唯一的,则使用std::map
。当键不唯一时使用无序映射。