我有以下代码将两个任意类型的向量组合成一个组合,即std::vector<std::tuple<A, B>>.
template<class A, class B>
std::vector<std::tuple<A, B>> combine(const std::vector<A>& a, const std::vector<B>& b) {
const auto combine_parts_ = [](const A& x, const B& y) {
auto result = std::tuple_cat(std::make_tuple(x), std::make_tuple(y));
return result;
};
std::vector<std::tuple<A, B>> results;
for (const auto& x : a) {
for (const auto& y : b) {
results.push_back(combine_parts_(x, y));
}
}
return results;
}
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚如何将其扩展到任意数量的类型/向量.我不关心重复类型; 实际上可能涉及两组或更多组相同类型.没关系.
一些示例用例,例如:
const auto combinations = combine(
std::vector<int>({1,2,3})
, std::vector<int>({1,2,3})
);
const auto combinations2 = combine(
std::vector<int>({1,2,3})
, std::vector<int>({1,2,3}) …Run Code Online (Sandbox Code Playgroud)