小编mwp*_*htx的帖子

如何在C++中组合两个或多个任意类型的向量

我有以下代码将两个任意类型的向量组合成一个组合,即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)

c++ tuples vector cartesian-product

7
推荐指数
1
解决办法
165
查看次数

标签 统计

c++ ×1

cartesian-product ×1

tuples ×1

vector ×1