C++无法使用{..}进行初始化

C++ Can not initialize with {...}

本文关键字:初始化 C++      更新时间:2023-10-16

我使用的是VS2012,我想包括以下映射:

#include<iostream>
#include<map>
std::map<int, int> code_map = {
  {65, 97},
  {66, 98},
  {67, 99},
  {68, 100},
  {69, 101},
  {70, 102},  
};

但是IDE告诉我

IntelliSense:使用"{…}"初始化对于类型为"std::map,std::allocater>>"的对象无效

有人知道为什么会出现这种错误吗?如果我使用VS2012,我猜我使用的是C++11,所以我认为这会起作用。

谢谢你的帮助。

Visual Studio 2012不支持初始值设定项列表。有关它所支持的C++11功能,请参阅以下内容:http://msdn.microsoft.com/en-us/library/vstudio/hh567368%28v=vs.120%29.aspx

根据C++11标准,您的代码非常好。

我记得在某个地方读到,Microsoft C++编译器还没有实现统一的初始化和初始化程序列表Visual C++编译器2012年11月CTP发布。也许您只需要升级编译器。

这里有添加地图的示例:

http://www.cplusplus.com/reference/map/map/map/

我自己还没有在c++中使用过映射,但根据其他人的说法,Visual Studio在添加该功能方面有点慢。

这个链接应该可以帮助你以另一种方式完成。