stl vector

15 篇文章 0 订阅
1.构造函数


explicit vector(
   size_type _Count
);   //这个构造函数,将构造出_Count个元素,并为每个元素调用构造拷贝函数,其中构造拷贝函数的原对象就一个临时默认构造函数的对象




2.vector的迭代器实质就是元素的指针.


3.若对vector进行的删除或者添加后,迭代器可能会失效, 在调用单个erase时不能指定end








********************元素的保留机制********************


容器中的size函数是得到容器中的实际元素个数,而capacity则是得到容器中分配的元素个数,对于vector来说迭代器是跟size关联的,而下标操作则是根据capacity关联的.当进行下标操作时应该使用capacity来进行边界定。




若要提前对容器的存储容量进行指定则可以调用函数reserve来完成.这个函数的参数指定要保留的元素数量,若数量小于容器已经分配的容量则什么也不做,若数量大于分配的容量则对容器容量进行扩充.这个函数并不影响容器的size而是影响容器的capacity,同时当调用这个函数后迭代器则可能会失效(因为内存可能重新分配了),因此调用reserve后需要重新获取迭代器.


我们可以通过下标的方式来进行操作,因为下标的边界是capacity。而不是size。当我们用下标做左值时。可以见一个元素赋值给容器中。但因为这样不会增加size。同时我们使用下标做右值时可能会有危险,因为可能这个元素并没有被构造(只是分配了内存)。所以一定要注意。


******感觉这样很矛盾*******,但要注意是,我们不因该使用capacity做下标的边界就可以了!!!




4.容器操作对迭代器的影响


对容器进行添加,删除,resize, reserve等操作后迭代器可能会无效(内存的重新分配!)因此要注意!!!当使用了这些操作后不要再对原来迭代器进行使用了!






5.vector对字符串的支持(char*  wchar_t*)


vector的默认分配器并没有对字符串进行特化版本,因此容器的元素就是一个指针,这就可能会是一个栈指针,所以不应该这样使用,而是使用string类来代替字符串,当然若
vector跟字符串的生存期一样是可以了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值