Мне было любопытно узнать, существует ли эффективный способ хранения данных в контейнере с максимальным количеством значений, и когда это значение будет достигнуто, он начнет удалять самые старые значения, чтобы добавить новые. И все это упорядоченным образом (это означает, что новые данные должны поступать после последних новых данных).
Я знаю, что могу добиться этого, используя очередь
q.Enqueue(1);
q.Enqueue(2);
q.Enqueue(3); // 1 2 3
q.Dequeue(); // 2 3
q.Enqueue(4); // 2 3 4
, но для итерации через данные впоследствии требуется преобразовать очередь в массив, что я не уверен, насколько это эффективно.
Может быть, лучше иметь массив с фиксированным размером и иметь индекс, который смещается в начало когда массив заполнен и используется некоторое значение по модулю magi c, итерация всегда выполняется в обратном направлении, чтобы запрашивать данные от самых последних к менее свежим. Это было бы менее читабельным, но работающим и более эффективным, я думаю.
Так что мой вопрос был бы, есть ли лучший, более читаемый и эффективный способ? А также, какова эффективность использования ToArray () при использовании других структур данных (например, List, Queue, Stack ..). Когда этого следует избегать?