C++入门:数组

C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。

所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。

Array 直接初始化 char 数组是特殊的,这种初始化要记得字符是以一个 null 结尾的。

实例

char a1[] = {'C', '+', '+'};          // 初始化,没有 null

char a2[] = {'C', '+', '+', '\0'};    // 初始化,明确有 null

char a3[] = "C++";                    // null 终止符自动添加
const char a4[6] = "runoob";          // 报错,没有 null 的位置

a4 是错误的,虽然 a4 包括 6 个直接字符,但是 array 大小是 7:6个字符 + 一个null。正确的是:

const char a4[7] = "runoob";

Array 是固定大小的,不能额外增加元素.当我们想定义不固定大小的字符时,可以使用 vector(向量) 标准库。

实例

#include <iostream>
#include <vector>
using namespace std;
 
int main() {
   // 创建向量用于存储整型数据
   vector<int> vec; 
   int i;

   // 显示 vec 初始大小
   cout << "vector size = " << vec.size() << endl;

   // 向向量 vec 追加 5 个整数值
   for(i = 0; i < 5; i++){
      vec.push_back(i);
   }

   // 显示追加后 vec 的大小
   cout << "extended vector size = " << vec.size() << endl;

   return 0;
}

vec 的大小随着 for 循环的输入而增大。

执行以上代码,输出结果:

vector size = 0
extended vector size = 5

静态 int array[100];   定义了数组 array,并未对数组进行初始化

静态 int array[100] = {1,2};  定义并初始化了数组 array

动态 int* array = new int[100]; delete []array;  分配了长度为 100 的数组 array

动态 int* array = new int[100]{1,2};  delete []array; 为长度为100的数组array初始化前两个元素

数组在使用时可以是一个含有变量的表达式,但是,在数组声明时必须用常量表达式。例如:

// 合法
const int a=19;
long b[a];

// 合法
const int a=19;
long b[a+5];

// 不合法
int a=19;
long b[a+5];

如果想声明一个任意长度的数组,可以用显式的类型转换,例如:

int a=19;
int b[(const int)a];

也可以定义一个常量来声明,例如:

int a=19;
const int a1=a;
int b[a1];

Vector(向量): C++ 中的一种数据结构,确切的说是一个类。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。

用法:

1.文件包含:

首先在程序开头处加上 #include<vector> 以包含所需要的类文件 vector

还有一定要加上 using namespace std;

2.变量声明:

2.1 例: 声明一个 int 向量以替代一维的数组: vector <int> a; (等于声明了一个 int 数组 a[],大小没有指定,可以动态的向里面添加删除)。

2.2 例: 用 vector 代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即: vector <int *> a 。同理想用向量代替三维数组也是一样,vector <int**>a; 再往上面依此类推。

3.具体的用法以及函数调用:

3.1 得到向量中的元素和数组一样,例如:

vector <int *> a
int b = 5;
a.push_back(b);//该函数下面有详解
cout<<a[0];       //输出结果为5

使用数组给向量赋值:

vector<int> v( a, a+sizeof(a)/sizeof(a[0]) );

或者:

int a[]={1,2,3,4,5,6,7,8,9};
typedef vector<int> vec_int;
vec_int vecArray(a,a+9);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰度少爷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值