代码之家  ›  专栏  ›  技术社区  ›  canellas

C++标准::元组<Ts…>到std::元组<std::vector<T>…>>

  •  2
  • canellas  · 技术社区  · 2 年前

    给定一个可变模板,我想定义一个对象,它将是可变模板中每种类型的向量的元组。

    类似于:

    template <typename... Ts>
    class C {    
       std::tuple<std::vector<T1>, std::vector<T2>,...,std::vector<Tn>> vectors;
    };
    

    它不一定是一个数据成员,我的意思是,如果可以使用更多的辅助类型或对象来实现这一点,那就不是问题了。

    我尝试了 std::make_index_sequence 具有 std::tuple ,但我想不通。

    2 回复  |  直到 2 年前
        1
  •  9
  •   Azam Bham    2 年前

    你不必在这里使用类,你可以使用一个简单的类型别名模板:

    template<typename... Ts>
    using VectorTuple = std::tuple<std::vector<Ts>...>;
    
        2
  •  5
  •   Artyer    2 年前
    template <typename... Ts>
    class C {    
       std::tuple<std::vector<Ts>...> vectors;
    };
    

    这扩展了模式( std::vector<Ts> )对于包装中的每种类型(产生您想要的 std::tuple<std::vector<T1>, std::vector<T2>,...,std::vector<Tn>> )