Интересно, почему мой доступ к памяти был несколько медленнее, чем я ожидал, я наконец понял, что реализация deque
в Visual C ++ действительно имеет встроенный дополнительный уровень косвенного обращения, разрушающий мою локализацию в памяти.
т.е. кажется, что он содержит массив T *
, а не массив T
.
Есть ли другая реализация, которую я могу использовать с VC ++, которая не имеет этой «возможности», или есть какой-то способ (хотя я считаю это маловероятным), чтобы избежать ее в этой реализации?
Я в основном ищу вектор
, который также имеет O (1) push / pop спереди.
Думаю, я мог бы реализовать это сам, но иметь дело с распределителем
и такой проблемой, и потребуется время, чтобы все исправить, поэтому я лучше воспользуюсь чем-нибудь предварительно написано / протестировано, если возможно.