在我們的C++項目中,我需要一些組合的數據結構,我認爲它應該與SQL表非常相似。我有一組具有不同數據類型的相同大小的數組(std :: vectors)。例如:在C++中的表實現
time(int), X(double), Y(double), valid(boolean), number_of_measurements(int)
讓我們假裝他們就像一張桌子,我需要有一個行級訪問權限。例如,我需要一個功能來插入一行到表中的任意位置,這將導致一個元素上的所有行向下移動,從而終止行。我可能需要按時間對錶格進行排序,並將其與其他相同類型的表格合併。
在C++世界中是否有類似的東西?
基本上我需要一個通用的解決方案,它支持任意數量的列和行。當然,性能是有意義的,所以我寧願在內存中而不是在數據庫中。
UPDATE
我看到很多人都提出要定義一個簡單的排結構,並將其存儲收藏。不,我不需要經常使用色譜柱操作。例如。我可能需要乘以整列或計算其平均值。我甚至可以插入它或在某個列上應用許多不同的算法。
我想避免一種情況,當我提取一列到一個向量,應用一些算法,然後把它放回結構。它看起來很醜陋,不是嗎?
我需要這或多或少類似:
// Initializing: (three columns: time, X, Y)
table t("time", std::vector<int>(), "X", std::vector<double>(), "Y", std::vector<double>());
// inserting a row
t.insert_row(1, 20.0f, 20.0f);
// accessing values:
t["time"][10] = 20;
// getting a column:
std::vector<int> time = t["time"];
// sorting
t.sort_by("time");
有什麼想法?
不要試圖模仿C++中的SQL表,它不會起作用。仔細考慮對象中的屬性,然後將對象存儲在集合中。 – Tony 2010-11-25 11:58:06