С первого взгляда двойной связанный список кажется разумным, но по мере того, как я начал внедрять, я столкнулся с проблемой отслеживания текущей позиции. Я использовал std :: list iterator, но работа с крайними случаями (см. Следующую часть) стала болью. Так вот требование к DS:Структура данных для медиа-плейлиста?
- сохранить порядок элементов
- Эффективного введения в середине
- Вставка/стирает не отменяют итераторы
- O (N) произвольный доступ не является проблема
Соединительный список подходит для этого.
Требование к текущей позиции курсора (итератор):
- Двунаправленного
- Изначально обозначает
end
положения - При итераторе в
end
положения, после вставки элемента в конце концов, в следующем итераторе вперед будет двигаться это к этому элементу. Такое же поведение, если ранее список воспроизведения был пуст - же в противоположном случае: итератор в начале,
push_front
, двигаясь в обратном направлении будет идти вновь добавленный элемент
Каковы лучшие практики по его реализации? Есть ли для него библиотеки (C++)?
std :: list звучит идеально. в чем проблема? –