Re: Обхід графа з обмеженнями
У кодi використано auto, ба не auto & (до речi й цей варiант не працює, хоч вiн тут не потрiбен, я вважаю).
Ну я ж кажу - проблема рівня. Ви бачите, що там посилання, але чомусь не можете зрозуміти, в чому проблема. Там має бути
int count = std::get<0, int>(pq.top());
А так, як у вас - виходить, що count має тип const int &, що посилається на верхівку черги... з якої ви робите pop, чим інвалідуєте посилання. Тому що auto може бути і int &, залежно від того, що йому присвоюється (а от навпаки вже ні, int в auto & не запхати). А тепер візьміть за звичку не писати auto ніде, крім випадків, коли ви абсолютно точно певні, що саме там за тип. auto - це не "компілятор розумний, сам здогадається", а переважно для випадків на кшталт
auto ptr = new VeryLongTemplateTypeName<InstanceTypeName>();
тобто коли тип явно вказаний, щоб не повторюватися.
покажiть як би ви транслювали
Я старомодний.
struct Vertex {
int cost, u, stops;
};
...
std::priority_queue<Vertex, std::vector<Vertex>, std::greater<Vertex>> pq;
...
Vertex v = pq.top();
pq.pop();
if(v.u==dst) ...
Якщо потрібні імена - то це вже не tuple.