Как правило, это невозможно.
Хотя вы можете обойтись без O(1)
вставки или O(1)
извлечения / удаления, оба варианта означают, что вы можете написать общий алгоритм сортировки за O(N)
время,в то время как O(N log(N))
- лучшее, что можно сделать, если у вас нет определенных типов данных (например, все данные являются целыми числами в фиксированном диапазоне и т. д.).Чтобы увидеть, как вы можете злоупотреблять своим решением, просто вставьте несортированный массив в ваш контейнер, затем снова и снова извлекайте первый элемент и удаляйте его.
Также некоторые из ваших ограничений не указаны или конфликтуют друг с другом.Наличие идентификатора не требуется, если вы не заказываете по идентификатору.Кроме того, возможность вставить элемент в произвольную позицию, кажется, нарушает ваше требование, чтобы контейнер был всегда заказан.
Не стесняйтесь открывать другой вопрос с более мягким и открытым (но все же конкретным) наборомограничения.