Нет подходящей функции для вызова 'std :: map, int> :: insert (std :: pair, int) 'vis.insert (make_pair (1,2), 3); - PullRequest
0 голосов
/ 31 декабря 2018

Я написал простой код, как показано ниже, который использует пару в качестве ключа на карте,

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

И я получаю сообщение об ошибке в строке vis.insert (make_pair (1,2), 3) , as " нет соответствующей функции для вызова 'std :: map, int> :: insert (std :: pair, int)' vis.insert (make_pair (1,2),3);»Кто-нибудь знает, почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 31 декабря 2018

Ключ вашей карты - пара, а значение - целое число.Проблема в том, что 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...