delphi 动态数组 删除第一个_L2数据结构基础第07课动态数组

L2-数据结构基础-第07课-动态数组

变长数组

cin >> n;
int a[n];

上面的代码, 严格说来, c++ 标准上是不支持的, 尽管大部分编译器能编译过.

c++ 是 c 的超集, 但是却不支持变长数组, 是因为c++ 提供了更强大的动态数组 vector.

在信息学竞赛中,有些题目需要定义很大的数组,这样会出现“超出内存限制"的错误。比如,如果一个图的顶点太多,使用邻接矩阵就会超出内存限制,使用指针实现邻接表又很容易出错,而使用vector实现简洁方便,还可以节省存储空间。

vector

vector是动态数组, 可以容纳许多类型的数据,因此也被称为容器

vector头文件

#include 

vector初始化

template 

这里的尖括号, 不是大于号, 小于号, 这里面放的是  「类型形式参数」 . 这个尖括号要特别注意加空格, 否则可能会变成 >> 或者 << .

比如:

vector  > mp  // 两个 > > 之间必须有空格.
vector <int> a; //生成一个名为a,保存int型对象的vector
vector <string> b; //生成一个名为b,保存string对象的vector
vector <vector<int> > mp; //生成一个保存vector型变量的vector
  • 方式1 给定大小
vector<int> a(10);
//定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值不确定
  • 方式2 给定大小和初始值
vector<int> a(10, 1);
//定义具有10个整型元素的向量,且给出的每个元素初值为1
  • 方式3 用向量/数组初始化
vector<int> a(b);
//用向量b给向量a赋值,a的值完全等价于b的值

vector<int> a(b.begin(), b.begin+3);
//将向量b中从0-2(共三个)的元素赋值给a,a的类型为int型

int b[7]={ 1,2,3,4,5,6,7};
vector<int> a(b, b+7);//从数组中获得初值

关于数组和向量的不同和相似之处如下表所示

操作 数组 向量
创建一个数组/向量 string a[10] vectorv
访问一个元素 a[index] v[index]
更新一个元素 a[index] = "China" v[index ] = " China"
返回大小 sizeof(a)/sizeof(a[0]) v.size()
追加新的元素 v.pusk_back("Chian")
删除(最后的)元素 v.pop_back()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值