C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2. vector内部其实包含了三个指针, 如下图: resize()------改变 finish 指针 reserve()----改变 end_of_storage 指针 3. [finish, end_of_storage)中的内存是没有调用过vector中的元素的构造函数的. 所以, 如下的这…
转自http://blog.csdn.net/jackywgw/article/details/6248342 首先必须弄清楚两个概念: 1.capacity 指容器在分配新的存储空间之前能存储的元素总数. 2. size 指当前容器所存储的元素个数 在弄清这两个概念以后,很容易懂resize和reserve的区别 1).reserve表示容器预留空间,但并不是真正的创建对象,需要通过insert()或push_back()等创建对象. resize既分配了空间,也创建了对象. 2).reser…
先看看<C++ Primer>中对resize()函数两种用法的介绍: 1.resize(n) 调整容器的长度大小,使其能容纳n个元素. 如果n小于容器的当前的size,则删除多出来的元素. 否则,添加采用值初始化的元素. 2. resize(n,t) 多一个参数t,将所有新添加的元素初始化为t. 而reserver()的用法只有一种 reserve(n) 预分配n个元素的存储空间. 了解这两个函数的区别,首先要搞清楚容器的capacity(容量)与size(长度)的区别. size指容器当前…
void reserve (size_type n); reserver函数用来给vector预分配存储区大小,即capacity的值 ,但是没有给这段内存进行初始化.reserve 的参数n是推荐预分配内存的大小,实际分配的可能等于或大于这个值,即n大于capacity的值,就会reallocate内存 capacity的值会大于或者等于n .这样,当调用push_back函数使得size 超过原来的默认分配的capacity值时 避免了内存重分配开销. 需要注意的是:reserve 函数分配…
#include <vector> using namespace std; int main() { vector<int> resizeVect; vector<int> reserveVect; resizeVect.resize(50, 2); //立即分配50个int,每个值为2,默认值为0,如果是class默认构造函数 vector<int>::iterator iter = resizeVect.begin(); printf("ou…
reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素.加入新的元素时,要调用push_back()/insert()函数. resize是改变容器的大小,且在创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象.此时再调用push_back()函数,是加在这个新的空间后面的.…
标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据.为了可以使用vector,必须在你的头文件中包含下面的代码:#include <vector>构造函数. Vectors 包含着一系列连续存储的元素,其行为和数组类…
1.     vector容器简介: vector向量容器是一种随机访问的数组类型,它提供了对数组元素的快速访问.随机访问,以及在序列尾部快速.随机地插入和删除操作.它类似于数据结构中的队列.数组和堆栈等概念. 2.     vector容器的定义 2.1    头文件 #include<vector> 2.2    命名空间 using namespace std; 2.3    举例: vector<string> m_vector;//定义一个string类型的向量容器 ve…
课程大纲 02实现基本原理 容器,算法,迭代器 教室:容器 人:元素 教室对于楼:容器 序列式容器: 容器元素在容器中的位置是由进入容器的时间和地点来决定 序列式容器 关联式容器: 教室中 按年龄排座,进去的人已经确定好应该坐在哪了 算法:遍历 查找 删除 统计 … 迭代器:就理解为一个指针 STL中容器和算法式是离开的,通过迭代器进行操作 03 STL基本概念理论 迭代器其实是对指针的封装,是类对象,里面有各种重载 04 string字符串常用操作 05 string课堂案例   06 vec…