- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第
C++中的vector使用详解及重要部分底层实现
目录一、vector简单概述1、1C语言中数组的不便1、2C++中的动态数组容器vector二、vector的常用语法举例2、1vector的声明和定义2、2尾插push_back2、3尾删pop_back2、4设置容量大小reserve2、5赋值=2、6在pos位置插入2、7任意位置删除2、8访问vector中的元素2、9数组中的头和尾元素front()、back()三、部分重要底层实现及常见问题3、1拷贝构造的底层实现3、2insert的底层实现及迭代器失效3、3erase的底层实现及迭代器失效3、4vector中深拷贝的问题
一、vector简单概述
1、1C语言中数组的不便
在C语言中,我们所要存放一组类型相同的数据,我们可以选择数组。C语言中的数组是静态的,一旦声明后,其大小就是固定的,无法动态调整。这就导致使用起来并不方便。当然,我们也用malloc、calloc来动态申请空间。当我们不再使用此数组时,我们也要时刻注意是否已经释放我们所动态开辟的空间。
1、2C++中的动态数组容器vector
针对C语言中静态数组的不便,C++中引出了动态数组容器vector,vector有以下几个不同和优点:
可以根据需要自动调整大小,可以动态地添加或删除元素。
就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。C++中的vector自动处理内存管理,无需手动指定大小或释放内存。C++中的vector提供了边界检查功能,能够确保在访问元素时不会发生越界错误。C++中的vector提供了丰富的函数和操作,如添加元素、删除元素、排序、查找等。这些功能能够更方便地操作和处理数组元素。
本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector并不会每次都重新分配大小。
只有概念并不能很好的使用vector,我们接下来看一下vector语法的讲解。
二、vector的常用语法举例
#includevector
#includeiostream
usingnamespacestd;
intmain()
vectorint
vectorintv1(10);
vectorintv2(10,1);
vectorintv3(v2);
v.push_back(10);
v.push_back(20);
v.pop_back();
v.reserve(10);
v=v1;
v.insert(v.begin()+2,3);
v.erase(v.begin()+2);
intsz=v.size();
for(inti=0;ii++)
coutv[i];
coutendl;
vectorint::iteratorit=v.begin();
while(it!=v.end())
cout*it;
it++;
coutendl;
for(autoit:v)
coutit;
coutendl;
v.clear();
v.front();
v.back();
return0;
}
我们就上面的例子展开对vector的用法进行详解。
2、1vector的声明和定义
当我们想用vector时,我们首先要引入头文件:#includevector。当我们可展开命名空间std,也可选择不展开命名空间std。具体例子如下:
#includevector
#includeiostream
usingnamespacestd;
intmain()
//std::vectorint
vectorint
vectorintv1(10);
vectorintv2(10,1);
vectorintv3(v2);
return0;
}
注意,上述中的变量v为空数组,空间大小为0。v1是开辟了一个大小为10个int的
您可能关注的文档
最近下载
- 黑龙江省中药材GAP基地自评价申报书、资料清单、现场检查评分表.doc VIP
- 中药材GAP基地自评价申报书.doc
- 全路旅客列车编组表.pdf
- 人教初中数学八上 《等边三角形(第1课时)》教案 (公开课获奖).doc VIP
- 2025年云南省初中学业水平考试指导丛书-道德与法治变化分析.pptx VIP
- 2025年云南省初中学业水平考试指导丛书·道德与法治内容提要.docx VIP
- 肺癌的多学科综合治疗模式.pptx VIP
- 八上名著阅读《红岩》.pdf
- 论企业文化与企业核心价值观的塑造.doc VIP
- 苏教版六年级数学上册第3课时 稍复杂的分数乘法实际问题(2)(教学课件).pptx VIP
有哪些信誉好的足球投注网站
文档评论(0)