c++ - 将 vector 放置到 map 中

标签 c++ dictionary vector

给定这种类型:

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/

相关文章:

c++ - 从 std::istream 读取 SDL_RWops

c++ - 固定模板参数的值

python - 替换存储在字典中的特定 numpy 数组中的条目

c++ - std::vector::erase 删除最后一个元素而不是第一个

c++ - 将 int 转换为 float : how it is done

c++ - 复制构造函数没有合适的默认构造函数

python - "Regrouping"来自嵌套字典的数据

python - 在 python 中定义嵌套字典

algorithm - 返回非相同最近邻向量的 n 个索引

c++ - 无符号整型 vector C++