首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有对的映射的静态初始化

具有对的映射的静态初始化
EN

Stack Overflow用户
提问于 2015-03-09 00:48:30
回答 2查看 1.5K关注 0票数 3

我正在尝试静态地初始化一个包含一对的map:

代码语言:javascript
复制
typedef map<int, pair<int, int>> mytype;
static const mytype mymap = { 3, {3, 0} };

我使用的是Visual Studio 2013,但出现错误:

代码语言:javascript
复制
 error C2440: 'initializing' : cannot convert from 'initializer-list' to 'std::map<int,std::pair<int,int>,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>'

你知道这是什么原因吗?我以为VS2013有这个C++11功能。

EN

回答 2

Stack Overflow用户

发布于 2015-03-09 00:53:21

你少了一组花括号:

代码语言:javascript
复制
static const mytype mymap = { { 3, {3, 0} } };
                            ^ ^    ^ 
                            | |    pair<int,int> (value)
                            | pair<const key, value> (map element)
                            map<key, value>
票数 13
EN

Stack Overflow用户

发布于 2015-03-09 00:54:28

编译器认为你想用两个元素初始化map。

正确的语法应该是:

代码语言:javascript
复制
static const mytype mymap = { { 3, {3, 0} } };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28929113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档