gpt4 book ai didi

c++ - 如何在 c++11/c++14 中定义一个以枚举为键、以整数为值的映射?

转载 作者:行者123 更新时间:2023-11-30 00:47:15 27 4
gpt4 key购买 nike

enum Symbols
{
BAR,
BELL,
PLUM,
ORANGE,
CHERRY,
DOESNOTMATTER,
}wheel1, wheel2, wheel3;

map<Symbols[3], int> symb = {{{BAR, BAR, BAR}, 250},
{{BELL, BELL, BELL}, 20},
{{BELL, BELL, BAR}, 20},
{{PLUM, PLUM, BAR}, 14},
{{PLUM, PLUM, PLUM}, 14},
{{ORANGE, ORANGE, BAR}, 10},
{{ORANGE, ORANGE, ORANGE}, 10},
{{CHERRY, CHERRY, CHERRY}, 7},
{{CHERRY, CHERRY, DOESNOTMATTER}, 5},
{{CHERRY, DOESNOTMATTER, DOESNOTMATTER}, 2}};

我定义了一个名为 Symbols 的枚举器。我正在尝试创建一个映射,其键是 Symbols 枚举数组,值是整数。

当我尝试运行该程序时,出现错误“/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:268:11:数组初始化器必须是一个初始化器列表”。

我在这里做错了什么?我也试过插入值。错误是一样的。

最佳答案

原始数组 Symbols[3] 不符合容器作为键类型 std::map 的要求.

std::map meets the requirements of Container, AllocatorAwareContainer, AssociativeContainer and ReversibleContainer.

参见 C++ concepts: Container

CopyInsertable
EqualityComparable
Destructible

您可以使用 std::arraystd::vector .如:

std::map<std::array<Symbols, 3>, int> symb = ...

LIVE

关于c++ - 如何在 c++11/c++14 中定义一个以枚举为键、以整数为值的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35452739/

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