我知道数组的大小无法调整,而向量是一个可选项。
我很想了解它们两者的内存分配方式。
我知道数组的大小无法调整,而向量是一个可选项。
我很想了解它们两者的内存分配方式。
int my_array[10];
使用
vector<int> my_vector;
正如Jigar所提到的,它在内部管理数组,以下是如何增加大小的实现(我是用Java说的):
//This ensures size of Vector
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
capacityIncrement : oldCapacity);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
//elementData is array of type Object
elementData = Arrays.copyOf(elementData, newCapacity); //Copies the specified array with specified capacity for array
}
int array[5];
realloc
和/或系统特定的手段。但是,请注意,首先,realloc
不能保证调整大小,其次,std::vector
的要求(据我所知)是它不能在内部使用realloc
。即使这通常会显著加快速度。 - Cheers and hth. - Alf