STL vector push_back详解
vector的push_back操作是将一个元素插入vector的末尾。 源码如下: template <class T, class Alloc = alloc> void YVector::push_back(const T& x) { if (finish != end_of_storage) { construct(finish, x); ++finish; } else { insert_aux(finish, x); } } 函数insert_aux template <class T, class Alloc = alloc> void YVector::insert_aux(iterator position, const T& x) { if (finish != end_of_storage) { construct(finish, *(finish - 1)); ++finish; T copy_x = x; copy_backward(position, finish - 2, finish - 1); *position = copy_x; } else { const size_type old_size = size(); const size_type new_size = old_size == 0 ? 1 : 2 * old_size;