![](/img/trans.png)
[英]std::make_pair with float array (float2, unsigned int)
[英]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.