簡體   English   中英

在Visual Studio中的unordered_map中插入並插入?

[英]Emplace and insert in unordered_map in Visual Studio?

我正在努力使用VS2010在c ++中使用unordered_map做最基本的事情:插入一些東西。

unordered_map<string, string> cats;
//cats.insert("Adam", "Streak");
//cats.emplace("Kyra", "Shadow");

我確定我犯了一個非常簡單的錯誤,但我現在花了兩個小時試圖弄清楚它是否有用。 上述兩條注釋行在取消注釋時都會出錯。

cats.insert("Adam", "Streak"); 沒有注釋,錯誤是:

錯誤1錯誤C2678:二進制'==':找不到運算符,它接受類型'const std :: string'的左手操作數(或者沒有可接受的轉換)c:\\ program files(x86)\\ microsoft visual studio 10.0 \\ VC \\包括\\ xfunctional

cats.emplace("Kyra", "Shadow"); 沒有注釋,錯誤是:

錯誤1錯誤C2780:'std :: pair <_Ty1,_Ty2> std :: _ Hash <_Traits> :: emplace(_Valty &&)':需要1個參數 - 提供2個

我很困惑,因為互聯網上有幾個使用這種確切語法的例子。 例如,cplusplus.com 在這里

我究竟做錯了什么?

兩個函數都接受std::pair<A,B> make_pair是最簡單的成對方式。

cats.insert(std::make_pair("Adam", "Streak"));
cats.emplace(std::make_pair("Kyra", "Shadow"));

要么

cats.insert(std::pair<std::string, std::string>("Adam", "Streak"));

http://ideone.com/43GqyB

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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