vector的相关误解
来源:互联网 发布:孤岛惊魂3低配优化 编辑:程序博客网 时间:2024/04/24 16:51
最近做东西要用到vector,之前没怎么用过,对其中的一些方法产生了一些误解,现在总结一下,希望对别人能有帮助。
reserve()是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此需要用push_back()/insert()函数插入新元素才能引用。
resize()是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了。若容器中已有元素,使用resize()时需要调用clear()。
resize(),clear(),erase()等都只改变容器的size,并不释放内存。
例1:
vector<int> vec1,vec2;vec1.resize(10); //申请了空间,也创建了对象(默认构造函数)vec2.reserve(10); //申请了空间,但没有创建对象for(int i=0;i<10;i++){ vec1[i]=i; //没错 vec2[i]=i; //出错}
例2:
vector<int> vec1,vec2;vec1.resize(10);vec1.push_back(1); //vec1[0]~vec1[9]为一个很大的负数,vec1[10]=1vec2.reserve(10);vec2.push_back(1) //vec2[0]=1;
例3:
vector<int> vec;vec.push_back(1);vec.push_back(2);vec.push_back(3);vec.resize(2,10); //vec.size()=2,但vec[0]~vec[2]中仍存放1~3,并没有变成10vec.clear();vec.resize(2,10); //vec.size()=2,vec[0]~vec[1]中存放10
- vector的相关误解
- vector<vector<int>>的输入相关
- 信息安全技术相关的五个误解与谎言
- Mysql中int(1)的误解及相关介绍
- Java Vector的相关知识
- vector相关的学习整理
- vector相关
- vector的用法及相关算法
- vector的定义和相关操作
- C++ vector 的相关基本操作
- string.h的误解
- TDD的误解
- 对Unicode的误解
- pfc_save 的误解
- 一种误解的臆想
- TDD的误解
- TDD的误解
- TDD的误解
- Linux内核升级指南
- flash cs6 初试
- poj 1029
- Spring采用properties配置多个数据库
- java例程练习(一维数组)
- vector的相关误解
- 拦截QT关闭窗口的CloseEvent
- 分析称App应用内置广告已成移动广告市场主流
- Linux常用命令大全
- 四则运算表达式求值
- Android——CursorAdapter抽象类(API)
- C语言深度解剖(精讲版)——读书笔记14 &&自己的一些理解
- 使用svnsync备份(远程)svn仓库
- C# 日期格式大全