两表进行左连接,两表各选择前两列作为键值,使用c++23,重新生成对应C++代码
抱歉,C++23还未正式发布,因此无法提供对应的C++23代码。以下是使用C++17实现左连接的代码,可以根据需要进行修改:
#include <iostream>
#include <unordered_map>
#include <vector>
int main() {
std::vector<std::pair<int, std::string>> table1 = {{1, "foo"}, {2, "bar"}, {3, "baz"}};
std::vector<std::pair<int, double>> table2 = {{1, 1.23}, {3, 4.56}, {4, 7.89}};
std::unordered_map<int, std::string> map1;
for (const auto& [key, value] : table1) {
map1[key] = value;
}
std::vector<std::pair<int, std::pair<std::string, double>>> result;
for (const auto& [key, value] : table2) {
if (map1.find(key) != map1.end()) {
result.emplace_back(key, std::make_pair(map1[key], value));
} else {
result.emplace_back(key, std::make_pair("", value));
}
}
for (const auto& [key, value] : result) {
std::cout << key << "\t" << value.first << "\t" << value.second << std::endl;
}
return 0;
}
该代码使用了unordered_map来存储第一张表的键值对,然后遍历第二张表,对于每个键值,判断它是否在第一张表中出现过,如果出现过,则将对应的键值对加入到结果中,否则将对应的键值对中的第一个值设为空字符串,然后加入到结果中。最后输出结果。
原文地址: https://www.cveoy.top/t/topic/vRO 著作权归作者所有。请勿转载和采集!