Я создал список смежности, используя
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;
}