Modern C++ 23 秋开放入口,如期而至

教育   2023-11-04 10:02   美国  

几个要点,一点要看!


一、本次开放时间为北京时间(时间结束才拉人):

2023.11.04 上午10点 ~ 2023.11.05 晚上8点


二、入口获取方式:按要求在公众号后台回复下面问题答案,即可得到。

问题:

Modern C++ 存在一些异构类型,而它们又可以分为静态异构类型和动态异构类型。


静态异构类型,例如 std::pair 和 std::tuple,它们能够指定不同的数据类型,但是无法动态地装入数据。


动态异构类型不仅能够指定不同的数据类型,还可以支持动态装入数据,从而可以和 std::vector 组合起来构成异构容器使用。下面是一个小例子助于理解:

 1void print(auto tuple_like_value) {
2    std::apply([](const auto&... args) {
3        (fmt::print("{} ", args), ...);
4    }, tuple_like_value);
5
6    fmt::print("\n");
7}
8
9int main() {
10
11    // std::pair 的例子 
12    {
13        using heterogenous_t = std::pair<intdouble>;
14        heterogenous_t container { 10.8 };
15        print(container);
16    }
17
18    // std::tuple 的例子
19    {
20        using heterogenous_t = std::tuple<intdoublebool>;
21        heterogenous_t container { 10.42true };
22        print(container);
23    }
24
25    // 问题
26    {
27        using value_type = ???;
28        using heterogenous_t = std::vector<value_type>;
29        heterogenous_t container;
30        container.push_back(5);
31        container.push_back(0.42);
32        container.push_back("hello");
33    }
34
35}

动态异构类型(27 行 value_type)与 std::vector 构成的异构容器(28 行),能够保存不同类型的值。


C++17 新增了两个这样的类型,请像 std::pair 和 std::tuple 这样,带命名空间,不带模板参数名称,写出它们的名称。


回复格式为:ns::type1 ns::type2。(使用微信自带的完整匹配关键词回复,回复格式不对或答案错误都无法立即收到回复,请注意多余的空格或错打中文符号问题


注意,是在以下地方回答,不是留言区。


三、加上请耐心等待,时间一到不会遗漏一人,不要老是来问这里已经写过的注意力。


CppMore
Dive deep into the C++ core, and discover more!
 最新文章