考研 408 × 求职面试
知识点 · 数据库系统 · 基础
每日一题 · 数据库系统
解析
面试小贴士 · 数据库系统
代码实现 · C++
#include <bits/stdc++.h>
using namespace std;
using T=vector<int>; using R=vector<T>;
R sel(const R&r, function<bool(const T&)> f){R o; for(auto&t:r) if(f(t)) o.push_back(t); return o;}
R proj(const R&r,int c){R o; for(auto&t:r){T u{t[c]}; if(find(o.begin(),o.end(),u)==o.end()) o.push_back(u);} return o;}
R uni(const R&a,const R&b){R o=a; for(auto&t:b) if(find(o.begin(),o.end(),t)==o.end()) o.push_back(t); return o;}
R dif(const R&a,const R&b){R o; for(auto&t:a) if(find(b.begin(),b.end(),t)==b.end()) o.push_back(t); return o;}
R prod(const R&a,const R&b){R o; for(auto&x:a) for(auto&y:b){T t=x; t.insert(t.end(),y.begin(),y.end()); o.push_back(t);} return o;}
void print(const R&r){for(auto&t:r){cout<<'('; for(int i=0;i<t.size();++i){if(i)cout<<','; cout<<t[i];} cout<<')'<<' ';} cout<<endl;}
int main(){
R a={{1,2},{2,3}}, b={{1,2},{3,4}};
print(sel(a,[](const T&t){return t[0]==1;})); // 选择 A=1
print(proj(a,1)); // 投影第2列并去重
print(uni(a,b)); // 并
print(dif(a,b)); // 差
print(prod(a,b)); // 笛卡尔积
return 0;
}