_Xlength_error("слишком длинный вектор") при изменении размера вектора до 0 ⇐ C++
_Xlength_error("слишком длинный вектор") при изменении размера вектора до 0
Я использую библиотеку LEMON для алгоритмов чистого потока, вот вся программа.
#include #include #include #include #include #include #include использование пространства имен std; использование пространства имен лимона; интервал основной() { ListDigraph g_origin; ListDigraph::NodeMap g_model(g_origin); ListDigraph::NodeMap g_name(g_origin); ListDigraph::NodeMap g_volume(g_origin); ListDigraph::ArcMap g_cost(g_origin); строка g_title; /*digraphReader(g_origin, "origin_map.lgf") .nodeMap("модель", g_model) .nodeMap("имя", g_name) .nodeMap("объем", g_volume) .arcMap("стоимость", g_cost) .attribute("подпись", g_title) .бегать();*/ } Но при запуске «ListDigraph::NodeMap g_volume(g_origin);» выдается ошибка
Я проверил исходный код LEMON и обнаружил, что NodeMap в конечном итоге ведет к классу «ArrayMap» (он работает хорошо), а NodeMap ведет к классу «VectorMap» (здесь возникает ошибка).
Вот конструктор, используемый в данном случае для VectorMap:
VectorMap(const GraphType&graph) { Parent::attach(graph.notifier(Item())); Container.resize(Parent::notifier()->maxId() + 1); } и контейнер является членом класса, который определяется как:
typedef std::vector Container; Контейнер-контейнер; В режиме отладки я заметил, что «Parent::notifier()->maxId()» обычно возвращает -1, поэтому параметр «resize()» на самом деле равен 0. Так почему же вектор::resize(0) ) выдает ошибку «слишком длинный вектор»?
Я использую библиотеку LEMON для алгоритмов чистого потока, вот вся программа.
#include #include #include #include #include #include #include использование пространства имен std; использование пространства имен лимона; интервал основной() { ListDigraph g_origin; ListDigraph::NodeMap g_model(g_origin); ListDigraph::NodeMap g_name(g_origin); ListDigraph::NodeMap g_volume(g_origin); ListDigraph::ArcMap g_cost(g_origin); строка g_title; /*digraphReader(g_origin, "origin_map.lgf") .nodeMap("модель", g_model) .nodeMap("имя", g_name) .nodeMap("объем", g_volume) .arcMap("стоимость", g_cost) .attribute("подпись", g_title) .бегать();*/ } Но при запуске «ListDigraph::NodeMap g_volume(g_origin);» выдается ошибка
Я проверил исходный код LEMON и обнаружил, что NodeMap в конечном итоге ведет к классу «ArrayMap» (он работает хорошо), а NodeMap ведет к классу «VectorMap» (здесь возникает ошибка).
Вот конструктор, используемый в данном случае для VectorMap:
VectorMap(const GraphType&graph) { Parent::attach(graph.notifier(Item())); Container.resize(Parent::notifier()->maxId() + 1); } и контейнер является членом класса, который определяется как:
typedef std::vector Container; Контейнер-контейнер; В режиме отладки я заметил, что «Parent::notifier()->maxId()» обычно возвращает -1, поэтому параметр «resize()» на самом деле равен 0. Так почему же вектор::resize(0) ) выдает ошибку «слишком длинный вектор»?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать список[int, int, int] в кортеж[int, int, int], а не в кортеж[int, ...]
Anonymous » » в форуме Python - 0 Ответы
- 290 Просмотры
-
Последнее сообщение Anonymous
-