C++ 数组的替代品(vector 和 array)

15 篇文章 0 订阅

模板类 vector 和 array 是数组的替代品。

模板类vector类似于String类,也是一种动态数组。可以在运行阶段设置vector对象的长度,可以在追加数据或者插入数据。它是使用new创建动态数组的替代品。实际上,vector类确实使用new 和 delete来管理内存,但这种工作都是底层自动完成的。

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

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

#include "dialog.h"
#include <QApplication>
#include <iostream>
#include <vector>   //STL C++98
#include <array>    //C++11
int main(int argc, char *argv[])
{
    using namespace std;
    QApplication a(argc, argv);
    Dialog w;
    w.show();
    double a1[4] = {1.2, 2.4, 3.6, 4.8};
    //C++98 STL
    vector<double> a2(4);
    a2[0] = 1.0/3.0;
    a2[1] = 1.0/5.0;
    a2[2] = 1.0/7.0;
    a2[3] = 1.0/9.0;
    array<double, 4> a3 = {3.14, 2.72, 1.62, 1.4};
    array<double, 4> a4;
    a4 = a3;

    cout << "a1[2]" << a1[2] << "at" << &a1[2] << endl;
    cout << "a2[2]" << a2[2] << "at" << &a2[2] << endl;
    cout << "a3[2]" << a3[2] << "at" << &a3[2] << endl;
    cout << "a4[2]" << a4[2] << "at" << &a4[2] << endl;

    return a.exec();
}

C++的三种复合类型:数组、结构和指针。

区分一下具体作用:
数组可以在一个数据对象中存储多个同种类型的值,通过使用索引或下标,可以访问数组中各个元素。
结构可以讲多个不同类型的值存储在同一个数据对象中,可以使用成员关系运算符(.)来访问其中的成员。
指针是被设计用来存储地址的变量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值