In C++, STL, we have template class <vector>
.
We know that it supports O(1)
random access, and tail modification.
My question is why we don't define push_front, or pop_front in <vector>
?
One explanation is that if we want to push/pop element in the front of a vector, we must shift each element in the array by one step and that would cost O(n)
.
But I think that is not always the case. Considering that if we implement <vector>
with circular array, we can achieve O(1)
push/pop from both front and tail of the vector, without losing the ability of O(1)
random access. So personally I can not think of any reason rather than just a minor overhead not to implement push_front
/pop_front
for <vector>
. Any thoughts?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…