我们的任务是从文件中读取有关表模式的信息,在 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 命令select
和where
将对应于STL算法std::find_if
将适当的谓词作为函数对象传递。
关于c++ - 在 C/C++ 中实现未知表模式的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14418185/