簡體   English   中英

使用 C++ 在地圖中插入 Pair 作為鍵

[英]Insert Pair as a key in map using c++

我想知道如何使用 C++ 在地圖中插入對,這是我的代碼:

map< pair<int, string>, int> timeline;

我嘗試使用以下方法插入它:

timeline.insert(pair<pair<int, string> , int>(make_pair(12, "str"), 33);
//and
timeline.insert(make_pair(12, "str"), 33);

但我有錯誤

\\main.cpp|66|error: no matching function for call to 'std::map<std::pair<int, std::basic_string<char> >, int&>::insert(std::pair<int, const char*>, int)'|

std::map::insert期望std::map::value_type作為其參數,即std::pair<const std::pair<int, string>, int> 例如

timeline.insert(make_pair(make_pair(12, "str"), 33));

或者更簡單

timeline.insert({{12, "str"}, 33});

如果你想就地構造元素,你也可以使用std::map::emplace ,例如

timeline.emplace(make_pair(12, "str"), 33);

現場直播

如有疑問,請簡化。

auto key = std::make_pair(12, "str");
auto value = 33;

timeline.insert(std::make_pair(key, value));

只需使用傳統方式:

timeline[key] = value;

對於插入和檢索對:

 timeline[{1,"stackOverFlow"}] = 69;
   
   for(auto i: timeline)
        {
            
            cout<< i.first.first;
            cout<< i.first.second;
            cout<< i.second;
        }

暫無
暫無

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

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