我在一次面试中被问到了这个问题。
我回答的要点是这样的
1)指向当前位置的索引;
2)必要时调整大小。
有没有人能更详细地解释一下?
发布于 2010-04-13 04:13:06
一个STL vector有一个size (当前存储元素的数量)和一个capacity (当前分配的存储空间)。
size < capacity,则push_back仅将新元素放在末尾,并将size递增1。push_back之前为该操作的复杂性为O(1),这意味着在导致调整大小的push_back期间,它不会是一个恒定时间的操作(但通常在许多操作中,它是恒定时间操作)。
发布于 2010-04-13 04:30:37
template< typename T >
void std::vector<T>::push_back(const T& obj)
{
this->insert(this->end(),obj);
}发布于 2010-04-13 04:13:35
当然,这是内在的实现定义。假设这是一个关于某人如何实现动态数组的问题,通常是这样的:
push_back检查capacity()并确保它至少比size().一些STL实现将通过使用交换(即容器的容器)省略一些副本,但在大多数情况下,这正是它的工作方式。
https://stackoverflow.com/questions/2625006
复制相似问题