【C++容器】数组和vector、array三者区别和联系

本文详细介绍了C++中的数组、向量vector以及array的定义、初始化、操作特点,对比了它们在内存位置、大小变化、执行效率等方面的区别。文章强调了vector在内存管理上的便利,但指出其在扩容时效率较低。同时,array提供了更安全的访问和操作方式。建议读者根据需求选择适合的数据结构。
摘要由CSDN通过智能技术生成

目录

一、数组

二、向量vector

三、数组与vector的对比

array和vector,数组三者区别和联系

共同点

 不同点


本文基于邓俊辉编著《数据结构(C++语言版)(第3版)》、《C++ Primer(第5版)》以及网上的相关博文而写,博主水平有限,若有不妥处,欢迎指出。

一、数组

C++中数组是一种内置的数据类型。

数组是存放类型相同的对象的容器,数组的大小确定不变,不能随意向数组中增加元素。

1、定义和初始化内置数组

(1)数组的大小不变,(a[d],d为数组的维度),数组的维度必须是一个常量表达式。定义数组的时,必须指定数组的类型和大小。

(2)初始化时,允许不指明数组的维度,不指明维度,则编译器根据数组初始值的大小推测出维度;若指定维度,则初始值的个数要小于等于维度,当小于时,不足的部分为0(其实还是等于维度)。

int a[]={1,2,3};    //数组a的大小为3;
int a[5]={1,2,3};    //等价于{1,2,3,0,0},大小为5
int a[5]={1,2,3,4,5,6};    //错误,初始值过多

 还有一种特殊的情况:字符数组。当用字符串字面值去初始化数组时,要注意字符串字面值的后面还有一个空字符。也就是说,数组的大小要等于字面值的大小加1。

特别注意:不允许拷贝和赋值------不能将数组的内容拷贝给其他数组作为初始值,也不能用数组为其他数组赋值。

int a[]={1,2,3};    
int a2[]=a;            //错误
a2=a;                //错误

 2、访问数组元素

数组的索引是从0开始,如:包含10个元素的数组a,其索引是从0到9而非1到10,若是a[10]则下标越界。

另外,使用数组下标时,其类型是size_t,在头文件cstddef中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值