C++学习笔记想法简友广场

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

2019-12-06  本文已影响0人  阿厉a_li

(七)数组的替代品

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。

上一篇 下一篇

猜你喜欢

热点阅读