std::make_map?统一初始化

std::make_map? uniform initialization

本文关键字:初始化 map make std      更新时间:2023-10-16

以下作品:

std::map<int,int> m{{1,2}};
std::tuple<std::map<int,int>,int> tm1{m, 2};
std::tuple<std::map<int,int>,int> tm2{{{1,2}}, 2};
std::tuple<std::map<int,int>,int> tmm1 = std::make_tuple(m, 2);

以下内容不适用:

std::tuple<std::map<int,int>,int> tmm2 = std::make_tuple({{1,2}}, 2);

有没有一种方法可以在不使用额外变量的情况下初始化用make_tuple生成的元组中的映射?

不,您不能只调用make_tuple,因为在这种情况下,第一个参数将是initializer_list。

手动指定。

std::tuple<std::map<int,int>,int> tmm2 =
std::make_tuple<std::map<int, int>>({{1,2}}, 2);

从init列表创建临时映射。

std::tuple<std::map<int,int>,int> tmm2 =
std::make_tuple(std::map<int, int>{{1,2}}, 2);