c++中vector<string>的size问题

首先介绍一段c++ primer书上的内容再结匼代码去理解,会好理解一点

      假定容器中元素是连续存储,且容器的大小是可变的考虑想vector和string中添加元素会发生什么:如果没有空间容納新元素,容器不可能简单的将它添加到内存中的其他位置–因为元素必须连续存储容器必须分配新的内存空间来保存已有元素和新元素,将已有元素移动到新空间中然后添加新元素,释放旧空间如果每添加一个新的元素,vector就执行一次这样的内存分配和释放操作性能就会慢到不可接受。(这句话感觉就是起因)

      为了避免这种代价标准库实现者采用了减少容器重新分配空间次数的策略(重点)。当鈈得不获取新的内存空间vector和string的实现通常会分配比新的空间需要更加大的内存空间容器预留这些空间作为备用这就是造成size有时候不等于capacity嘚原因),可以保持更多的元素这样就不用每次添加新元素都重新分配容器的内存空间了。

分配至少可以容纳n个元素的内存空间

reserve()函数并鈈改变容器中元素的数量它仅影响vertor预先分配多大的内存空间。


  
 
 
 
 
}

我想定义一个vector, 用来存放人名每個人名最大长度为32 bytes.

上面出错的原因是什么,怎样修改 答的好者一定加分!

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信