c++ - C++ 中的表实现

标签 c++ data-structures types

在我们的C++项目中我有一些组合数据结构的需求,我认为它应该与SQL表非常相似。我有一组具有不同数据类型的相同大小的数组 (std::vectors)。例如:

time(int), X(double), Y(double), valid(boolean), number_of_measurements(int)

让我们假设它们就像一张表,我需要按行访问它们。例如,我需要一种将一行插入表的任意位置的功能,这将导致一个元素上的所有行向下移动,杀死行。我可能需要按时间对表格进行排序,将其与其他相同类型的表格合并。

C++世界里有这样的东西吗?

基本上我需要一个通用的解决方案,它支持任意数量的列和行。当然,性能是有意义的,所以我更喜欢在内存中而不是在数据库中这样做。

更新

我看到很多人提议定义一个简单的行结构并将其存储在一个集合中。不,就我需要经常使用列进行操作而言,这不会飞。例如。我可能需要乘以整列或从中计算平均值。我什至可以对它进行插值或在特定列上应用许多不同的算法。

而且我想避免这样一种情况,即我将列提取到 vector 中,对其应用一些算法,然后将其放回结构中。看起来很丑,不是吗?

我需要或多或少与此类似:

// 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" );

有什么想法吗?

最佳答案

如果你需要类似 SQL 的东西,你可以尝试 SQLite .它是一个库,可以为内存中的 SQL 数据库提供 SELECT 功能、排序、合并以及几乎所有您期望从 SQL 数据库获得的基本操作。它还支持文件支持的数据库。这应该可以节省您实现自己的解决方案的时间。

关于c++ - C++ 中的表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276746/

相关文章:

oracle - 在 Oracle 中,如何验证对象类型层次结构中使用的对象类型?

Java文本提取与数据结构设计

c++ - 如何使用 DrawText() 显示变量?

c++ - 链表中的动态大小数组

c++ - C++ 中的函数如何以最少的复制返回值或引用?

delphi - TStringList 后代,每个元素都有 id 和 subid

algorithm - 什么是存储支持添加、删除元组和比较(在 a 或 b 上)的 2 元组 (a, b) 的最佳数据结构)

c - 使用双倍数据速率的数据简单比较

c++ - 由于未打包的非 POD 字段而忽略打包属性

c++ - 制作一个解析器来提取函数名、参数、返回类型