在C++
代表的关系,我想代表C++代码的关系(表):在C++
- 关系的列是整数。
- 关系中的列数在运行时是固定的。
- 不应该允许重复(这是成本的主要来源)。
- 我想从名称到关系的地图。
有效实现的任何想法,这里的主要问题是在插入时检测重复项,它可能非常昂贵。
使表中的每一行为struct Row
。
使用std::set
或std::unordered_set
来存储这些结构。可以在(对于std::set
)O(log n + d)时间或(对于std::unordered_set
)摊销O(d)时间中检测碰撞(查询),其中d是列数。
要有效地从名称映射到行,请创建一个boost::bimap<std::string, Row>
。
KennyTM有一个点。你可以使用SQLite。如链接中所述,您可以使用它来创建临时内存数据库。
Unicity是一个非常标准的数据库约束... – 2010-03-10 15:15:39
他早些时候做出了这个评论,自那以后我改变了我的帖子。 – 2010-03-10 15:18:12
你想要关系中的列的名称,或者是索引好吗? – 2010-03-10 14:44:04
我更喜欢有名字,但是我可以没有他们。 – myahya 2010-03-10 14:46:01
你能描述一下你想要处理的关系吗?例如,如果你的主要目标是做一些聚合的东西,其他模式可能适用。 – 2010-03-10 14:51:18