gpt4 book ai didi

c++ - 如何使用 "const unordered_map"?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:12:40 24 4
gpt4 key购买 nike

我想声明一个 const unordered_map 但我遇到编译器错误,而且我无法找出正确的语法。我找到的所有示例,但有一个是非 const 的,而且我完全按照我所知道的唯一 const 示例来做,但我遇到了编译器错误。这是我的代码:

typedef const std::unordered_map<std::string,int> StringIntMap;
StringIntMap string_to_case {
{"get",1},
{"add",2}
};

vs 110 给我:

Error   1   error C2601: 'string_to_case' : local function definitions are illegal  

或者如果我在 string_to_case 和我得到的括号之间放置一个等号:

Error   1   error C2552: 'string_to_case' : non-aggregates cannot be initialized with initializer list

vs 120_CTP_Nov2012 反而给了我以下带或不带等号的信息:

error C2440: 'initializing' : cannot convert from 'initializer-list' to 'std::unordered_map<std::string,int,std::hash<_Kty>,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>'
1> with
1> [
1> _Kty=std::string
1> , _Ty=int
1> ]
1> No constructor could take the source type, or constructor overload resolution was ambiguous

我做错了什么?

最佳答案

这适用于 gcc 6.1.1:

$ cat t.C
#include <unordered_map>
#include <string>

typedef const std::unordered_map<std::string,int> StringIntMap;
StringIntMap string_to_case = {
{"get",1},
{"add",2}
};
$ g++ -g -c -std=c++1z -o t.o t.C
$ g++ --version
g++ (GCC) 6.1.1 20160621 (Red Hat 6.1.1-3)

你没有做错任何事。您要么遇到编译器错误,要么您的编译器不支持最新的 C++ 标准。

关于c++ - 如何使用 "const unordered_map"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427798/

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