📅  最后修改于: 2023-12-03 15:24:27.373000             🧑  作者: Mango
在C++中,std::tuple是一种可以包含不同类型元素组成的容器。当我们需要对std::tuple的元素进行操作时,常常需要迭代它们。本文将介绍如何在C++中迭代std::tuple的元素。
在迭代std::tuple之前,我们需要获取它的大小。可以使用std::tuple_size模板类来获取std::tuple的大小。
#include <iostream>
#include <tuple>
template<typename T>
void print_tuple_size(const T& tuple)
{
std::cout << "Tuple size = " << std::tuple_size<T>::value << std::endl;
}
int main()
{
std::tuple<int, float, double> tpl(10, 20.5f, 30.5);
print_tuple_size(tpl);
return 0;
}
输出:
Tuple size = 3
我们可以使用模板递归来迭代std::tuple的元素。实现方式如下:
#include <iostream>
#include <tuple>
template<size_t index, typename... Args>
typename std::enable_if<index == sizeof...(Args), void>::type print_tuple(const std::tuple<Args...>&) {}
template<size_t index, typename... Args>
typename std::enable_if<index < sizeof...(Args), void>::type print_tuple(const std::tuple<Args...>& tpl)
{
std::cout << std::get<index>(tpl) << std::endl;
print_tuple<index + 1>(tpl);
}
int main()
{
std::tuple<int, float, double> tpl(10, 20.5f, 30.5);
print_tuple<0>(tpl);
return 0;
}
输出:
10
20.5
30.5
在上面的代码中,我们使用了模板递归来迭代std::tuple的元素。print_tuple