gpt4 book ai didi

c++ - 将 vector 放置到 map 中

转载 作者:太空狗 更新时间:2023-10-29 20:58:00 25 4
gpt4 key购买 nike

给定这种类型:

std::map<int, std::vector<T>> map;

如何直接放置元素?

map.emplace(10, /* ? */);

我可以先单独创建 vector ,然后在调用 emplace 时使用该标识符,但如果可以以某种方式直接执行此操作,这是不可取的。

最佳答案

两者

map.emplace(typename decltype(map)::value_type(10, {1, 2, 3}));

map.emplace(10, std::initializer_list<int>{1, 2, 3});

应该可以正常工作。

我确定 gcc 拒绝我的第一次尝试是有原因的:

map.emplace(10, {1, 2, 3});

但我不知道这是一个很好的理由还是一个缺陷。

编辑: 这似乎与大括号初始化列表 ({1, 2, 3}) 没有类型这一事实有关,使其成为不可能与完美转发一起使用(这是 map.emplace 所必需的)。关于这一点有几个相关的 SO 帖子,例如 this answer .

关于c++ - 将 vector 放置到 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770648/

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