Здравствуйте, B0FEE664, Вы писали:
BFE>>>Интересно. Где можно глянуть?
E>>Начни с реализации stl в твоём компиляторе
E>>На самом деле, зачем хранить ДВЕ ноды — терминатора, когда можно хранить ОДНУ? То, что возвращает end -- поле list, элемент двусвязного циклического списка. Его next -- это begin списка. Сверху этого всего декоратор, для rbegin и т. д...
BFE>О звёзды! Это что? В списке всегда хранится один лишний элемент с аллоцированной памятью под пользовательские данные? Какой кошмар...
Нет, необязательно. У end'а может быть другой тип (базовый), не включающий память под пользовательские данные.
E>>Почему поиск цикла в таком списке -- это алгоритм на графе, а поиск цикла в ГПСЧ -- нет?
Алгоритм-то тот же?
BFE>Потому, что список существует как структура и к ней применяется алгоритм. А при поиске цикла в ГПСЧ нам сама структура не нужна, насколько я понимаю.
Алгоритм тот же самый, который как раз обходит структуру. А тот же самый он потому, что структура (в общепринятом
математическом смысле) в обоих случаях одинаковая.
А вот выражены ли связи в коде явно как указатели, или же задаются функцией перехода — на применимость алгоритма не влияют