我正在编写一个 SQL 解释器。
我选择将我的元组存储vector
为 s 的数组(实际上)map
。
表的每个元组都是一个map
. 键是属性名称,值是该属性的值。
我必须支持诸如project
.
所以我必须实现这样的方法:
Table Table::project(const vector<string> &attributes) {
// return a Table with just the attributes passed
}
在 Table 类中,它接受要投影的属性并返回一个仅包含这些属性的新表。
我能想到的唯一方法是:
Table Table::project(const vector<string> &attributes) {
// iterate through each tuple of the current table. For each tuple,
// iterate through all attributes passed, find the value of each one in
// the current tuple and add it to the new tuple. Insert the new tuple into
// the new table. Return the table.
}
有没有更好的方法来做到这一点?
我应该使用更好的数据结构吗?