; поэтому вы не можете сказать, было ли перераспределение.
+, STL у нас есть шаблон класса<vector>
, Мы знаем, что это поддерживаетO(1)
произвольный доступ и хвостовая модификация. У меня вопрос, почему мы не определяем push_front или pop_front в<vector>
?
Одно из объяснений состоит в том, что если мы хотим вставить / вытолкнуть элемент впереди вектора, мы должны сдвинуть каждый элемент в массиве на один шаг, и это будет стоитьO(n)
.
Но я думаю, что это не всегда так. Учитывая, что если мы реализуем<vector>
с круговой решеткой мы можем достичьO(1)
нажмите / поп с фронта и хвоста вектора, не теряя способностиO(1)
произвольный доступ Так что лично я не могу думать ни о какой причине, а только о незначительных накладных расходах, чтобы не реализоватьpush_front
/pop_front
за<vector>
, Какие-нибудь мысли?