函数编程中的迭代器



是否可以用代数数据类型在C++中实现迭代器。假设我有一个元组,它包含一堆T类型的元素。使用variant作为迭代器来遍历元组是个好主意吗?在函数式编程方式中,迭代元组的最佳方式是什么。

元组上的函数式编程风格迭代可能看起来像这样:

template <typename Tuple, typename F, size_t... Is>
void IterateHelper(const Tuple& t, F f, std::index_sequence<Is...>) {
(f(std::get<Is>(t)), ...);
}
template <typename Tuple, typename F>
void iterate(const Tuple& t, F f) {
IterateHelper(t, f, std::make_index_sequence<std::tuple_size_v<Tuple>>{});
}

演示

最新更新