美文网首页
【C++】复合类型之vector和array模板

【C++】复合类型之vector和array模板

作者: 老九君 | 来源:发表于2019-08-08 11:28 被阅读0次

今天我们就给小伙伴们简单的介绍一下数组的替代品,vector和array,模板类vector类似于string类,也是一种动态数组。您可以在运行阶段的设置vector对象的长度,可在末尾附加新数据,还可以在中间插入新数据。基本上,它是使用new创建动态数组的替代品 。

vector类的功能比数组强大,但付出的代价是效率稍低。如果您需要的是长度固定的数组,使用数组是更加的选择,但代价是不那么方便和安全。有鉴于此,C++11新增了模板类array,它也是位于名称空间std中。下面我们就来简单的介绍一下:

1、模板类vector

模板类vector类似与string类,也是一种动态数组。您可以在运行阶段设置vector对象的长度,可在末尾附加新数据,还可以在中间插入新数据。基本上,它是使用new创建动态数组的替代品。实际上vector类确实使用new和delete来管理内存,但这种工作是自动完成的。

--vector的使用方法:

首先,要使用vector对象,必须包含头文件vector。

其次,vector包含在名称空间std中,因此您可使用using编译指令、using声明或std::vector。

第三,模版使用不同的语法来指出它存储的数据类型。

第四,vector类使用不同的语法来指定元素数。

示例:

    其中,vi是一个vector对象, vd是一个vector对象。由于vector对象在您插入或添加值时自动调整长度,因此可以将vi的初始长度设置为零。但要调整长度,需要使用vector包中的各种方法。

一般而言,下面的声明创建一个名为vt的vector对象,它可以存储n_elem个类型为typeName的元素:

vector

 vt(n_elem); ,其中,参数n_elem可以是整形常量,也可以是整型变量。

2、模板类array

    vector类的功能比数组强大,而且使用的是自由存储空间,但是付出的代价是效率稍低。如果您需要的是长度固定的数组,使用数组是更佳的选择,但代价是不那么方便和安全。有鉴于此,C++11新增了模板类array,它也位于名称空间std中。与数组一样,array对象的长度也是固定的,也使用栈(静态内存分配),而不是自由存储区,因此其效率与数组相同,但更方便更安全。

使用方法:

首先要创建array对象,需要包含头文件array.创建语法如下:

推而广之,下面的声明创建一个名为arr的array对象,它包含n_elem个类型为typename的元素:

需要注意的是,与创建vector对象不同的是,n_elem不能是变量。

3、比较数组、vector对象和array对象

从一个程序开始:

输出结果:

需要注意的地方:

(1)一个array对象可以赋给另一个array对象,而数组,必须逐个元素复制数据。

(2)注意这个语句:a1[-2] = 20.2;

其含义是:找到a1指向的地方,向前移两个double元素,并将20.2存储到目的地。也就是说,将信息存储在数组的外面。与C语言一样,C++也不检查这种超界错误。

vector和array对象能够禁止这种行为吗?可以选择使用成员函数at()。

使用at()时,将在运行期间捕获非法索引,而程序默认将中断。这种额外的检查的代价是运行时间更长,这就是C++让允许您使用任何一种表示法的原因所在。

老九学堂出品,转载请私信哦

对于文章内容有不理解的可以添加老九君个人QQ:614940318,请备注来自简书

老九学堂免费C、C++、Java课程地址:

https://study.163.com/courses-search?keyword=%E8%80%81%E4%B9%9D%E5%AD%A6%E5%A0%82

相关文章

  • 【C++】复合类型之vector和array模板

    今天我们就给小伙伴们简单的介绍一下数组的替代品,vector和array,模板类vector类似于string类,...

  • 第三章 摘录

    3.3 标准库类型vector c++既有类模板,也有函数模板,其中vector是一个类模板。表示对象的集合,其中...

  • Cpp:数组

    现在开始学习第四章“数组和指针”。C++语言提供了两种类似于vector和迭代器类型的低级复合类型——数组和指针。...

  • C++ vector 对象/array对象/数组

    模板类vector和array是数组的替代品。 模板类vector 类似于string类,是一种动态数组,可在运行...

  • 标准模板库-vector

    标准模板库-vector 1. vector简介 vector为C++的STL中的模板数组容器。在使用时需要包含#...

  • ★07.关于类模板

    简述 类模板:是类类型的模板,如:vector。 模板类:类模板的实例化,如:vector 。 类模板的模板参数无...

  • c++学习记录6(GeekBand)

    这周作业是和vector有关的,就找了找vector相关的内容。如下: vector是C++标准模板库中的部分内容...

  • Boolan_C++面向对象高级编程(下)-第7周

    通过学习,知道了C++的vector容器可以说是Array的一个高级抽象版本。我们知道C和C++里面的Array都...

  • 《Learning R》笔记 Chapter 4 上 Vecto

    本章开始介绍R中的数据类型:vector matrix array。 本篇总结vector Vector 创建 v...

  • C++ STL 之 vectot(二)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 迭代器使用 与 array 类似,v...

网友评论

      本文标题:【C++】复合类型之vector和array模板

      本文链接:https://www.haomeiwen.com/subject/fintjctx.html