c++ - 在 C/C++ 中实现未知表模式的数据结构?

标签 c++ sql c data-structures

我们的任务是从文件中读取有关表模式的信息,在 c/c++ 中实现该表,然后成功地对其运行一些“选择”查询。表模式文件可能有这样的内容,

    Tablename- Student
    "ID","int(11)","NO","PRIMARY","0","".

现在,我的问题是什么数据结构适合该任务。问题是我不知道表可能有多少列,也不知道这些列的名称是什么,也不知道它们的数据类型。例如,一个表可能只有一列 int 类型,另一个表可能有 15 列不同数据类型。事实上,我什至不知道架构文件可能具有其描述的表的数量。

我想到的一种方法是拥有一定数量的 vector ,例如 20 个 vector (假设表中列的上限为 20),将这些 vector 命名为 1stvector、2ndvector 等等,映射 vector 的名称 vector 的列,然后相应地使用它们。但它的代码似乎会与所有这些 if/else 语句或 switch case 语句(用于映射)搞得一团糟。

在谷歌搜索/堆栈溢出时,我了解到您无法在运行时描述类,否则问题可能更容易解决。

感谢任何帮助。 谢谢。

最佳答案

作为 C++ 数据结构,您可以尝试 std::vector< std::vector<boost::any> > 。一个vector是标准库的一部分,允许动态调整元素数量。 vector 的 vector 意味着任意数量的行和任意数量的列。 Boost.Any不是标准库的一部分,但广泛使用并允许存储任意类型。

我不知道有什么好的 C++ 库可以对该数据结构执行 SQL 查询。您可能需要自己编写。例如。 SQL 命令selectwhere将对应于STL算法std::find_if将适当的谓词作为函数对象传递。

关于c++ - 在 C/C++ 中实现未知表模式的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14418185/

相关文章:

c - 在 C 中的函数中使用#define 数字

c++ - 如何在 BB 10 级联中加载第二个 .qml 文件

c++ - 如何使用带有附加参数的 for_each?

MySQL 条件自连接

php - 注入(inject)攻击(我以为我被保护了!)<?php/**/eval(base64_decode(无处不在

c - Visual Studio 社区 2017 工作负载

c++ - 我可以实例化一个 std::reference_wrapper<T> 吗,其中 T 是一个不完整的类型?

.so 文件中的 C++ 模板化函数

sql - 如何检查SQL中的列中是否存在特定字符串? (例如 : need to find 'ice' only but not 'service' )

c - mmap 保护标志对进程间共享的影响