Хотя это все еще O (n), его, безусловно, легче читать, если вы используете методы расширения LINQ ElementAt()
или ElementAtOrDefault()
, это расширения IEnumerable<T>
, которые Queue<T>
реализует.
using System.Linq;
Queue<T> queue = new Queue<T>();
T result;
result = queue.ElementAt(2);
result = queue.ElementAtOrDefault(2);
Редактировать
Если вы согласны с другими предложениями по преобразованию своей очереди в массив только для этой операции, вам нужно решить, оправдывают ли вероятные размеры вашей очереди и расстояние до индекса, который вы будете искать с начала своей очереди. O (n) операция вызова .ToArray (). ElementAt (m), не говоря уже о требованиях к пространству для создания вторичного хранилища для него.