两表进行左连接,两表各选择前两列作为键值,使用哈希表,重新生成对应C++代码
#include <unordered_map>
using namespace std;
vector<vector<int>> leftJoin(vector<vector<int>>& table1, vector<vector<int>>& table2){
unordered_map<int, vector<vector<int>>> hashTable;
vector<vector<int>> result;
// 遍历table2,将每个键值对应的记录放入哈希表中
for(auto record : table2){
int key = record[0];
if(hashTable.find(key) == hashTable.end()){
hashTable[key] = vector<vector<int>>{record};
}
else{
hashTable[key].push_back(record);
}
}
// 遍历table1,找到每个键值对应的记录,并与table1的记录进行合并
for(auto record : table1){
int key = record[0];
if(hashTable.find(key) != hashTable.end()){
for(auto record2 : hashTable[key]){
result.push_back({key, record[1], record2[1]});
}
}
}
return result;
}
原文地址: https://www.cveoy.top/t/topic/vRu 著作权归作者所有。请勿转载和采集!