簡體   English   中英

沒有匹配的函數調用&#39;std::map <std::pair<int, int> , int&gt;::insert(std::pair<int, int> , int)&#39; vis.insert(make_pair(1,2),3);

[英]No matching function for call to ‘std::map<std::pair<int, int>, int>::insert(std::pair<int, int>, int)’ vis.insert(make_pair(1,2),3);

我寫了一個簡單的代碼如下,它使用pair作為map中的鍵,

map<pair<int, int>, int> vis;
int main(
                )
{
        vis.insert(make_pair(1,2),3);
        return 0;
}

我在vis.insert(make_pair(1,2),3)線上收到錯誤,因為“沒有匹配的函數可以調用 'std::map, int>::insert(std::pair, int)' vis .insert(make_pair(1,2),3);" .有人知道我為什么會收到這個錯誤嗎?

您的地圖的鍵是一對,值是一個整數。 問題在於insert()獲取一個參數,即一對鍵值。 您有兩個選擇:

std::map<std::pair<int, int>, int> vis;
int main(
                )
{
    // option one (c++11 and later)
    vis.emplace(std::make_pair(1,2),3);

    // option two - pack key and value into a single pair.
    vis.insert(std::make_pair(std::make_pair(1,2),3));

    // option three - use braces (c++11 and later)
    vis.insert({{1,2},3});

    return 0;
}

暫無
暫無

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

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