簡體   English   中英

unordered_map insert()錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM