美文网首页C++学习笔记想法简友广场
第四章 复合类型(7)数组的替代品

第四章 复合类型(7)数组的替代品

作者: 阿厉a_li | 来源:发表于2019-12-06 20:56 被阅读0次

(七)数组的替代品

1.模板类vector

    模板类vector类似于string类,也是一种动态数组。定义方法:#include <vector>

    vector<int> a;创建了长度为0的vector; int n; cin >> n; vector<double> b(n);创建了长度为n的vector;其中n可以是整型常量,也可以是整型变量。

2.模板类array

    vector类的功能比数组强大,但付出的代价是效率稍低模板类array,它也位于名称空间std中。与数组一样,array对象的长度也是固定的,也使用栈〈静态内存分配),而不是自由存储区,因此其效率与数组相同,但更方便,更安全。

    用法:array<double,2> arr ;   array<int,5> ai;

注意后面的数量只能是常量

3.数组,vector和array的区别

    首先,注意到无论是数组、vector对象还是 array 对象,都可使用标准数组表示法来访问各个元素。其次,从地址可知,array对象和数组存储在相同的内存区域(即栈),而vector对象存储在另一个区域〈自由存储区或堆〉中。第三,注意到可以将一个array对象赋给另一个 array 对象;而对于数组,必须逐元素复制数据。

    为了防止超出边界,一种选择是使用成员函数at()。就像可以使用 cin 对象的成员函数getline()一样,您也可以使用vector和array对象的成员函数 at():  a2 . at (1) = 2.3;

    中括号表示法和成员函数at()的差别在于,使用 at()时,将在运行期间捕获非法索引而程序默认将中断。这种额外检查的代价是运行时间更长

    Vector是动态数组的替代品,而array是定长数组的替代品。注意array是c++11定义的,需要包含头文件<array>,使用g++编译的时候要用命令g++ -std=c++0x file.cpp。

相关文章

  • 第四章 复合类型(7)数组的替代品

    (七)数组的替代品 1.模板类vector 模板类vector类似于string类,也是一种动态数组。定义方法:...

  • 重读经典系列之《C++PrimerPlus》第4章

    第四章 复合类型 声明数组的通用格式如下:typeName arrayName[arraysize];表达式arr...

  • Cpp:数组

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

  • Golang笔记(一):数组与切片

    数组 创建方式:以创建 int 类型数组为例 复合型数组:复合型数组可以省略类型化标签 多维数组注意: 1. 多...

  • Go复合数据类型

    复合数据类型:是以不同的方式组合基本类型可以构造出来的复合数据类型,在Golang中复合数据类型有数组、slice...

  • Go核心语言编程 - 复合数据类型(3)

    Go对应的复合数据类型有数组,字典,指针,切片,通道,结构和结构,他们字面类型如下: • 指针 • 数组• 数组初...

  • Go基础编程---复合类型

    复合类型分类 指针 指针默认值为 nil 数组(同一个类型的集合)长度在定义后无法更改。数组是值类型 数组的定义 ...

  • Go语言基础03——复合类型

    复合类型的分类 指针、数组、切片slice、字典map、结构体struct 指针 数组 数组是指一系列同一类型数据...

  • 第四章 复合类型(1)数组

    影响最为深远的复合类型是类,它将是学习c++的难点。然而,C++还支持几种更普通的复合类型 ,它们都来自C语言。例...

  • 4-1、rust语言学习记录

    持续更新 变量 数据类型 标量类型:整型、浮点型、布尔类型和字符类型,存放在栈 复合类型:元组,数组

网友评论

    本文标题:第四章 复合类型(7)数组的替代品

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