姬長信(Redy)

c – 向量内存分配策略


我写了一小段代码来确定如何在向量中分配内存.
#include 
#include 
using namespace std;
int main ()
{
  vector myvector;
  unsigned int capacity = myvector.capacity();

  for(unsigned int i = 0; i 

我在Ubuntu上使用Visual Studio 2008和g 4.5.2编译了这个并获得了以下结果:

视觉工作室:

1 2 3 4 6 9 13 19 28 42 63 94 141 211 316 474 711 1066 1599 2398 3597 5395 8092 12138 18207 27310 40965 61447 92170 138255

capacity = capacity * 1.5;

G :

1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072

capacity = capacity * 2;

如您所见,这是两个非常不同的结果.
为什么会这样?它只取决于编译器还是沉迷于其他因素?

即使对于大量元素,继续将容量增加一倍是否真的有意义?