如何用c ++中的不同键引用数据

时间:2017-07-06 23:22:21

标签: c++

我是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

我希望能够通过idtime搜索数据,即

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

这样做最有效的内存方式是什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

内存有效的方法是创建一个具有ID,时间和值成员的类,然后使用该类的std::vector

对于运行时效率,您希望创建一个索引表std::map,其中包含搜索关键字段和向量中项目的索引。为ID创建一个映射,为Time字段创建另一个映射。这是数据库表的常用方法。

编辑1:重复密钥
如果关键字段是唯一的,则使用std::map。当键不唯一时使用无序映射。