【问题标题】:How can ignore some elements of tuple?怎么能忽略元组的一些元素呢?
【发布时间】:2020-07-23 20:09:35
【问题描述】:

我有一个包含一些元素的元组,我想将元组的一些元素分配给变量,并忽略其中一些。

 auto tuple1 = std::make_tuple(1,2,3,4);
 // variable a should be placeholder 1 in tuple and variable b should be place holder 3;
 int a,b ;


 

【问题讨论】:

    标签: c++ tuples c++17


    【解决方案1】:

    您可以在元组中使用 from std::tie 和 std::ignore ,例如:

     int a, b;
     tie(std::ignore, a, std::ignore, b)= tuple1;
    

    【讨论】:

      【解决方案2】:

      如果您使用支持 C++20 的 strutural binding along,您可以编写

      #include <tuple>    
      
      auto tuple1 = std::make_tuple(1, 2, 3, 4);
      [[maybe_unused]] auto [dummy1, a, dummy2, b] = tuple1;
      

      仅使用 ab[[maybe_unused]] 部分是为了抑制由于-Wunused-variable 引起的警告。

      这实际上是从答案中得到启发的:structured binding with [[maybe_unused]]

      【讨论】: