background image

  if (isbn==0)
   break;
  vi.push_back(isbn); // insert element into vector
 } 
}

 

  在 vector 

 

对象构造期间,它先分配一个由其实现定义的默认的缓存大小。一般 vector 

 

分配的数据存储初始空间是 64-256 存储槽(slots

 

)。当 vector 感觉存储空间不够时,它会

 

自动重新分配更多的内存。实际上,只要你愿意,你可以调用 push_back() 任何多次,甚
至都不用知道一次又一次的分配是在哪里发生的。

 

  为了存取 vector 

 

元素,使用重载的 [] 

 

操作符。下列循环在屏幕上显示所有 vector 元

素:

for (int n=0; n<vi.size(); ++n)
{
 cout<<"ISBN: "<<vi[n]<<endl;
}

  第二步:优化

 

  在大多数情况下,你应该让 vector 自动管理自己的内存,就像我们在上面程序中所
做的那样。但是,在注重时间的任务中,改写默认的分配方案也是很有用的。假设我们预

 

先知道 ISBNs 

 

的数量至少有 2000

 

。那么就可以在对象构造期间指出容量,以便 vector 具

 

有至少 2000 个元素的容量:

vector <int

 

> vi(2000); // 

 

初始容量为 2000 个元素

 

  除此之外,我们还可以调用 resize() 成员函数:

vi.resize(2000);// 

 

建立不小于 2000 个元素的空间

 

  这样,便避免了中间的再分配,从而提高了效率。