本文整理汇总了C++中query::partial_eval方法的典型用法代码示例。如果您正苦于以下问题:C++ query::partial_eval方法的具体用法?C++ query::partial_eval怎么用?C++ query::partial_eval使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类query
的用法示例。
在下文中一共展示了query::partial_eval方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
vector<row> table::select(const query &q) {
vector<row> results;
row temp_row;
// perform key-search
if (q.singularity(_key)) {
for (int i=0;i<_keys.size();i++) {
temp_row.add((*_keys[i].col), _keys[i].data);
if (q.partial_eval(_key, temp_row)) {
results.push_back(read_row(_keys[i].fpos/_row_size));
//if (results.back().is_empty()) results.pop_back();
if (results.back().is_empty() || !q.eval(results.back())) {
results.erase(results.end()-1);
}
}
temp_row.clear();
if (q._limit > -1 && results.size() >= q._limit) break; //results.erase(results.end()-1);
}
/* for (int i=0;i<results.size();i++) {
if (results[i].is_empty() || !q.eval(results[i])) {
results.erase(results.begin()+i);
--i;
}
}*/
// truncate results to q._limit
/*if (q._limit > -1) while (results.size() > q._limit) {
if (results.size() == 0) break;
results.erase(results.end()-1);
}*/
}
// perform full search:
else {
for (int i=0;i<_row_count;i++) {
results.push_back(read_row(i));
if (results.back().is_empty() || !q.eval(results.back())) results.pop_back();
// limit results size to q._limit
if (results.size() >= q._limit) break;
}
}
return results;
}