C++中的vector使用详解及重要部分底层实现.docxVIP

C++中的vector使用详解及重要部分底层实现.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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的

文档评论(0)

157****2177 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档