[英]unordered_map insert() error
我可以编译从MSDN页面获得的代码:
using namespace std
typedef std::unordered_map<char, int> Mymap;
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
但是当我将其更改为:
using namespace std
typedef std::unordered_map<int, vector<int> > Mymap;
Mymap c1;
c1.insert(Mymap::value_type(1, vector<int> v (1,1)));
c1.insert(Mymap::value_type(2, vector<int> v (1,2)));
c1.insert(Mymap::value_type(3, vector<int> v (1,3)));
我得到了错误(该代码段的行号明显不正确):
myfile.cpp:121:29: error: expected primary-expression before ‘(’ token
myfile.cpp:121:45: error: expected primary-expression before ‘v’
myfile.cpp:122:32: error: expected primary-expression before ‘(’ token
myfile.cpp:122:48: error: expected primary-expression before ‘v’
myfile.cpp:123:32: error: expected primary-expression before ‘(’ token
myfile.cpp:123:48: error: expected primary-expression before ‘v’
哈希图应为“ int =>整数列表”。 用一个数字初始化列表。
这里有什么问题? 我是否需要使用value_type
以外的其他东西?
c1.insert(Mymap::value_type(1, vector<int> v (1,1)));
^ // What's this 'v' doing there?
您正在寻找的是:
c1.insert(Mymap::value_type(1, vector<int>(1,1)));
也就是说,没有v
。 vector<int> v(1, 1);
声明一个类型为vector<int>
的变量,但您没有尝试声明一个变量,而是试图构造一个临时对象,该对象不需要(或不允许)名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.