gpt4 book ai didi

c++ - 访问和打印元组中的数据,并使用 C++14 使用模板函数显示它

转载 作者:行者123 更新时间:2023-12-02 09:53:13 25 4
gpt4 key购买 nike

我有一个如下列表

my_mixed_list = {"Sample String", int_value, user_data_type}
我想使用 C++11 std::tuple 以简单的白色分隔方式显示上面的列表。
可能是这样的:
template <typename T>
void display_mixed_items (std::tuple <T> mixed) {
for (const auto& mixed_ele : mixed) std::cout << mixed_ele << " ";
}
我知道我必须重载 ostream 运算符才能显示用户定义的数据。但我希望你能得到这个问题。
我不确定为什么编译器会提示参数列表。什么是完成上述任务的正确方法。在 Stackoverflow 上找不到确切的答案。
在 Python 中,我们可以简单地使用 list 和 tada!但如果不是元组,还有其他方法可以使用可变参数模板或其他方法。

最佳答案

您可以通过创建自己的 for_tuple 来获得迭代元组的函数:

template<typename T, typename F, std::size_t... S>
void for_tuple_impl(std::index_sequence<S...>, T&& tup, F& function) {
using expand_t = int[];
(void) expand_t{(void(function(std::get<S>(std::forward<T>(tup)))), 0)..., 0};
}

template<typename T, typename F>
void for_tuple(T&& tup, F function) {
for_tuple_impl(
std::make_index_sequence<std::tuple_size<std::decay_t<T>>::value>{},
std::forward<T>(tup),
function
);
}
然后像这样使用它:
for_tuple(my_tuple, [](auto&& mixed_ele){ std::cout << mixed_ele << ' '; });
C++23 想要创建一个名为 template for 的语言功能。替换那堆刹车和括号(尚未正式):
template for (auto&& mixed_ele : mixed) {
std::cout << mixed_ele << ' ';
}

关于c++ - 访问和打印元组中的数据,并使用 C++14 使用模板函数显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62610433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com