vector中的resize与reserve
来源:互联网 发布:怎么样加入淘宝 编辑:程序博客网 时间:2024/05/20 05:54
void reserve (size_type n);reserver函数用来给vector预分配存储区大小,即capacity的值 ,但是没有给这段内存进行初始化。reserve 的参数n是推荐预分配内存的大小,实际分配的可能等于或大于这个值,即n大于capacity的值,就会reallocate内存 capacity的值会大于或者等于n 。这样,当调用push_back函数使得size 超过原来的默认分配的capacity值时 避免了内存重分配开销。需要注意的是:reserve 函数分配出来的内存空间,只是表示vector可以利用这部分内存,但vector不能有效地访问这些内存空间,访问的时候就会出现越界现象,导致程序崩溃。void resize (size_type n);void resize (size_type n, value_type val);resize函数重新分配大小,改变容器的大小,并且创建对象a.当n小于当前size()值时候,vector首先会减少size()值 保存前n个元素,然后将超出n的元素删除(remove and destroy)b.当n大于当前size()值时候,vector会插入相应数量的元素 使得size()值达到n,并对这些元素进行初始化,如果调用上面的第二个resize函数,指定val,vector会用val来初始化这些新插入的元素c.当n大于capacity()值的时候,会自动分配重新分配内存存储空间。resize(),设置大小(size);reserve(),设置容量(capacity);size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存。打个比方:正在建造的一辆公交车,车里面可以设置40个座椅(reserve(40);),这是它的容量,但并不是说它里面就有了40个座椅,只能说明这部车内部空间大小可以放得下40张座椅而已。而车里面安装了40个座椅(resize(40);),这个时候车里面才真正有了40个座椅,这些座椅就可以使用了。
阅读全文
0 0
- vector中的resize与reserve
- vector 中的resize()与reserve()的区别
- Vector::reserve与Vector::resize
- vector中的reserve和resize
- vector中的resize()和reserve()
- vector中的resize()和reserve()
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- CentOS设置中文教程
- 迷宫的简单实现
- 隐式转换和显示转换
- Redis集群的搭建
- 排序:插入排序与希尔排序
- vector中的resize与reserve
- 1. Two Sum
- 模拟库函数(strcpy,strcat,strchr,strstr,strcmp,memcpy,memmove)
- 第十二周周四总结
- NYOJ-Binary String Matching
- (转)比特币基金难产 区块链基金成首发
- IDEA使用MAVEN搭建SSM(IDEA+Maven+Spring+Spring MVC+Mybatis)
- Ubuntu系统NCNN框架入门指南
- poj3104二分