Использование «auto» вызывает смертельный сигнал, но «auto &» отлично работает с оператором [] карты - PullRequest
1 голос
/ 23 января 2020

Я создал список смежности, используя

map<string,priority_queue<string, vector<string>, greater<string>>>& adjList

, теперь, когда я пытаюсь получить доступ к значению, используя метод ниже

auto dest = adjList[start];

я получаю ошибку времени выполнения: "AddressSanitizer: DEADLYSIGNAL"

И если я использую

auto& dest = adjList[start];

, он работает нормально и без ошибок времени выполнения.

Пожалуйста, помогите мне понять, в чем разница.

Полный код ниже

void dfs(string start, map<string,priority_queue<string, vector<string>, greater<string>>>& trips, vector<string>& res)
    {
        auto dest = trips[start];
        while(!dest.empty())
        {
            auto s = dest.top();
            dest.pop();
            dfs(s,trips,res);
        }
        res.push_back(start);
    }


    vector<string> findItinerary(vector<vector<string>>& tickets) {
        vector<string> result;
        map<string,priority_queue<string, vector<string>, greater<string>>> adjList;
        for(auto i : tickets)
        {
            auto it = adjList.find(i[0]);
            if(it == adjList.end())
            {
                adjList[i[0]] = priority_queue<string, vector<string>, greater<string>>();
            }
            adjList[i[0]].push(i[1]);
        }
        vector<string> res;
        dfs("JFK",adjList,res);
        return res;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...