gpt4 book ai didi

c++ - unordered_multimap : values as tuples or vectors

转载 作者:行者123 更新时间:2023-11-30 02:21:32 25 4
gpt4 key购买 nike

我想构建一个 std::unordered_map,其中的值不是单个字符串、整数或 float ,而是元组、 vector 或结构。我知道这可以像@Vittorio_Romeo 和@CoryKramer 解释的那样完成 here .但是,我发现向其中添加新元素时存在一些问题。

让我用@Vittorio_Romeo 提供的示例来说明这一点。假设我有以下 unordered_map:

struct Color
{
int r, g, b;
};

std::unordered_map<std::string, Color> colors =
{
{"red", {255, 0, 0}},
{"blue", {0, 0, 255}}
};

现在我想向这张 map 添加另一个元素。我尝试执行以下操作:

colors.emplace("black",(1,1,1) );

不知何故,这行不通,我在这一行中得到了一些错误和注释(我不太明白):

error: no matching function for call to ‘std::pair<const std::__cxx11::basic_string<char>, Color>::pair(const char [6], int)’
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }

我做错了什么吗?会不会是我的编译器(gcc 5.4.1 版)的问题?。我将不胜感激任何帮助。非常感谢!

最佳答案

表达式 (1, 1, 1) 是括号内的表达式 1,1,1,仅此而已。 1,1,1 等于 (1,1),1 使用 comma operator两次,结果是单个 int1

您需要明确指定一个 Color 对象,例如使用Color{1,1,1} 代替。

关于c++ - unordered_multimap : values as tuples or vectors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203775/

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