【发布时间】:2010-05-17 20:14:17
【问题描述】:
我一直在尝试使用新的 0X 标准初始化 <ints, vector<ints> > 的映射,但我似乎无法正确获取语法。我想制作一个带有 key:value = 1:
#include <initializer_list>
#include <map>
#include <vector>
using namespace std;
map<int, vector<int> > A = {1,{3,4}};
....
使用 gcc 4.4.3 时出现以下错误:
error: no matching function for call to std::map<int,std::vector<int,std::allocator<int> >,std::less<int>,std::allocator<std::pair<const int,std::vector<int,std::allocator<int> > > > >::map(<brace-enclosed initializer list>)
编辑
按照 Cogwheel 的建议并添加额外的大括号,它现在编译时会出现一个警告,可以使用 -fno-deduce-init-list 标志来消除该警告。这样做有什么危险吗?
【问题讨论】:
-
@YGL - 已修复,谢谢。仍然没有解决原来的问题。
-
在 4.4.1 上,编译器出现神经崩溃(内部错误)。也许 4.5 可以正常工作?
-
不是还少了一对牙套吗?
{1,{3,4}}不是地图中的单个条目吗? IE。不应该是{{1,{3,4}}}吗?