在C++

2010-03-10 44 views
2

代表的關係,我想代表C++代碼的關係(表):在C++

  • 關係的列是整數。
  • 關係中的列數在運行時是固定的。
  • 不應該允許重複(這是成本的主要來源)。
  • 我想從名稱到關係的地圖。

有效實現的任何想法,這裏的主要問題是在插入時檢測重複項,它可能非常昂貴。

+0

你想要關係中的列的名稱,或者是索引好嗎? – 2010-03-10 14:44:04

+0

我更喜歡有名字,但是我可以沒有他們。 – myahya 2010-03-10 14:46:01

+0

你能描述一下你想要處理的關係嗎?例如,如果你的主要目標是做一些聚合的東西,其他模式可能適用。 – 2010-03-10 14:51:18

回答

1

使表中的每一行爲struct Row

使用std::setstd::unordered_set來存儲這些結構。可以在(對於std::set)O(log n + d)時間或(對於std::unordered_set)攤銷O(d)時間中檢測碰撞(查詢),其中d是列數。

要有效地從名稱映射到行,請創建一個boost::bimap<std::string, Row>

+0

但我不知道在編譯時行的模式 – myahya 2010-03-10 14:48:12

+0

@myahya:所以對行使用'std :: vector'。 – kennytm 2010-03-10 14:48:57

0

KennyTM有一個點。你可以使用SQLite。如鏈接中所述,您可以使用它來創建臨時內存數據庫。

+0

Unicity是一個非常標準的數據庫約束... – 2010-03-10 15:15:39

+0

他早些時候做出了這個評論,自那以後我改變了我的帖子。 – 2010-03-10 15:18:12