【问题标题】:Put each variadic template argument into container将每个可变参数模板参数放入容器中
【发布时间】:2021-03-13 18:13:03
【问题描述】:

在现代 C++ 中有没有办法将每个可变参数模板参数放入 std::tuple 内的容器中?例如:

template<class ... T>
class MyClass {
private:
std::tuple<T...> myTuple;
};

int main() {
MyClass<int, char, float> test; //inner class stores an std::tuple<int, char, float>
//is there a way to make the inner class store std::tuple<std::vector<int>, std::vector<char>, std::vector<float>>
return 0;
}

不必使用元组,只要我得到一个类,其中每个可变参数模板参数的最终结果都存储在像std::vector 这样的容器中。

【问题讨论】:

  • 你的意思是private: std::tuple&lt;std::vector&lt;T&gt;...&gt; myTuple; 吗?
  • @max66 嗯,我会试试...
  • @max66 看起来可行。我正在尝试为您投票/选择您以获得最佳答案,对不起,我是 Stackoverflow 的新手
  • 好吧,max66 还没有发布答案,所以你还不能投票/接受它:) 如果在一段合理的时间之后没有人发布答案,你可以继续自己回答问题,但请务必将帮助您解决问题的评论归功于用户。
  • @cigien 好的,谢谢你的帮助:)

标签: c++ tuples c++17 variadic-templates


【解决方案1】:

有没有办法让内部类存储std::tuple&lt;std::vector&lt;int&gt;, std::vector&lt;char&gt;, std::vector&lt;float&gt;

您只需解压缩std::tuple&lt;std::vector&lt;...&gt;&gt; 中的T 可变参数列表。

我是说

template<class ... T>
class MyClass {
   private:
      std::tuple<std::vector<T>...> myTuple;
}; // ...........^^^^^^^^^^^^^^

【讨论】:

    猜你喜欢
    • 2021-02-11
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多