Я работаю над игрой в Yoyo Game Maker, где у меня есть предметы, перемещающиеся вдоль конвейерных лент. Поскольку элементы перемещаются только в одном направлении, я подумал, что имеет смысл использовать структуру данных в очереди или очереди, чтобы хранить элементы. Однако, чтобы иметь возможность отображать элементы, мне нужно иметь возможность читать их все в любой точке очереди, а не только голову или хвост.Queue-подобная структура данных, которая читается в любом месте
[[a] [b] [c] [d]]
|
V
a <- [[ ] [b] [c] [d]] <- e
|
V
[[b] [c] [d] [e]]
| | | |
V V V V
b c d e
я мог бы просто использовать массив, который вручную перемещает все свои значения вперед на один слот каждый ход (используя для цикла), но как-то, что кажется неэффективным, лага, или по крайней мере, плохой форме. Во всяком случае, мои программные инстинкты отталкиваются от мысли использовать такую систему.
Это правильное предположение? Является ли массив действительно лучшим способом реализации такой структуры? Должен ли я даже беспокоиться об эффективности, или различия в этом случае незначительны?
Некоторые советы или примеры (на любом языке программирования) были бы весьма признательны.
https://en.wikipedia.org/wiki/Circular_buffer – jbapple
@jbapple Это будет работать отлично, спасибо. – a52