Я реализовал топологическую сортировку ориентированного ациклического графа в C ++, который выводит топологический отсортированный список.
Я вижу некоторые реализации, где отсортированный список хранится в std::stack
, а некоторые в std::vector
.Я не уверен, какая или другая структура данных будет наиболее подходящей для моего случая.По сути, мне просто нужно перебрать этот отсортированный список и извлечь элементы, хранящиеся сверху вниз.Список не изменяется в процессе извлечения.
Использование std::vector
представляется бесполезным с точки зрения сложности, поскольку я буду перераспределять вектор каждый раз, когда в элемент добавляется новый элемент.список.Этот список может стать довольно массовым.
Кажется, что я не могу перебрать std::stack
в соответствии с Как пройти через стек в C ++? .
Есть ли другой вариант, который был бы более подходящим для того, что я хочу сделать?