C++;实现向量类以允许动态调整数组大小? 如何实现C++向量类以允许动态重新排列数组?< /P>
它是通过链表类型的实现来完成的吗? 是否每次添加或删除元素时都会从头创建一个新数组 谢谢,C++;实现向量类以允许动态调整数组大小? 如何实现C++向量类以允许动态重新排列数组?< /P>,c++,vector,C++,Vector,它是通过链表类型的实现来完成的吗? 是否每次添加或删除元素时都会从头创建一个新数组 谢谢, R典型行为:在内部,一个std::vector具有一个连续的长度数组容量数组。在任何给定的点上,实际上只使用size元素。如果在任何时候size将超过capacity(假设您多次调用push_back()),则会分配一个新的、更大的内部数组(capacity可能会加倍)。然后将旧数组中的所有元素复制到新数组中,并删除旧元素和数组。详细信息取决于实现,但由vector分配的内存块保证是连续的 GCC在重新分
R典型行为:在内部,一个
std::vector
具有一个连续的长度数组容量数组。在任何给定的点上,实际上只使用size
元素。如果在任何时候size
将超过capacity
(假设您多次调用push_back()
),则会分配一个新的、更大的内部数组(capacity
可能会加倍)。然后将旧数组中的所有元素复制到新数组中,并删除旧元素和数组。详细信息取决于实现,但由vector分配的内存块保证是连续的
GCC在重新分配内存时使用的是2.0系数,MSVC使用的是1.5系数。大多数实现都使用一个简单的数组,当数组满时,容量将增加一倍。这确实涉及到将现有元素复制到一个新的内存块中,但在相当长的一段时间内,您不必再次这样做,这一点得到了补偿。(使用这种技术,元素添加在固定的时间内运行)还注意到链表实现虽然看起来有吸引力,但并没有完全填充<代码> STD::vector < /COD>要求,这是内存中的连续布局。刚才讨论了C++关于最优系数的讨论。在Alexandrescu的显著参与下,我认为他们推断这是alpha
(x^2=x+1
)的正根