【C++】C++数组——定义、访问、动态数组

定义

相同类型数据元素的集合
特点1:数组中每个数据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
特点3:一旦创建,不能改变大小
特点4:数组中的元素在内存中是连续依次排列的

一维数组

一维数组定义方式

  1. 数据类型 数组名[数组长度]
  2. 数据类型 数组名[数组长度] = {值1, 值2 …}
    如果在初始化的时候,没有全部填写完,会用0来填补剩余数据
  3. 数据类型 数组名[ ] = {值1, 值2 …}
    定义数组的时候,必须有初始长度,即大括号内的元素个数是明确的

注意,数组以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。
合法访问的下标范围:左闭右开

一维数组访问方式

数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。
举例:

a = array[2]

数组名用途

  1. 统计整个数组占用内存大小
int arr[10] = {1,2,3,4,5,6,7,8,9,10 };
 cout << "整个数组占用内存空间为:" << sizeof(arr) << endl;
 /*sizeof给出整个数组所占据的内容的大小,单位是字节*/
 cout << "每个元素占用内存空间为:" << sizeof(arr[0]) << endl;
 /*sizeof(a)/sizeof(a[0])即为数组的单元个数*/
 cout << "数组中元素个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
 /*sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单元个数*/

输出结果:
40
4
10

  1. 可以通过数组名查看数组首地址
cout << "数组首地址为:" << (int)arr << endl;
cout << "数组中第一个元素地址为:" << (int)&arr[0] << endl;

输出结果:
17431292
17431292

多维数组

C++支持多维数组。多维数组声明的一般形式如下:

数据类型名 数组名[size1][size2]...[sizeN];

举例:下面的声明创建了一个三维整型数组:

int tridim[5][10][4]; 

二维数组

一个二维数组,在本质上,是一个一维数组的列表。声明一个x行y列的二维整型数组,形式如下:

数据类型 数组名[x][y];

举例:定义一个整型的包含3行和4列的二维数组:

int a[3][4]

一个二维数组可以被认为是一个带有x行和y列的表格。对于int a[3][4] 这个3行(Row)和4列(Column)的二维数组,示意如下:
在这里插入图片描述

二维数组定义方式

  1. 数据类型 数组名[ 行数 ][ 列数 ]
  2. 数据类型 数组名[ 行数 ][ 列数 ] = { {数据1, 数据2} ,{数据3,数据4}}
  3. 数据类型 数组名[ 行数 ][ 列数 ] = { 数据1, 数据2,数据3,数据4}
  4. 数据类型 数组名[ ][ 列数 ] = { 数据1, 数据2,数据3,数据4}

C++数组的动态建立及输入

这涉及到vector容器的使用,故简要介绍之。vector容器:能够存放任意类型的动态数组,常用基本操作:

  1. 头文件#include

  2. 创建一维vector对象,vector vec;二维vector<vector> vec2;

  3. 尾部插入数字:vec.push_back(a);

  4. 尾部元素弹出:vec.pop_back();相当于删除尾部元素。

  5. 使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的,和数组的访问形式一样。

  6. 插入元素:vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a。

  7. 删除元素:vec.erase(vec.begin()+2);删除第3个元素。

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始。

  1. 向量大小:vec.size()。

  2. 清空:vec.clear()。

  3. 初始化赋值:

vector c1(c2) // 复制一个vector(c2也是一个vector)

vector c(n) // 创建一个vector,含有n个数据,数据均已缺省构造产生

vector c(n, elem) // 创建一个含有n个elem元素的vector

vector c(beg,end) // int array[]={1,2,3},beg=array,end=array+3,用数组为vector赋值

  1. 判断是否为空:vec.empty()。

一维数组的动态建立及输入,并输出验证

#include <iostream>
#include <vector>

using namespace std;

int main(){
    vector<int> vector1;
    int inputnum=0;
    cout << "数组元素个数:";
    cin >>inputnum; 

    int temp = 0;
    cout << "数组元素值:";
    for (int i = 0; i < inputnum; i++)//输入一维数组
    {
        cin >> temp;
        vector1.push_back(temp);
    };
    
    //输出验证 
    for (int i = 0; i < inputnum; i++)//打印输入的数组 
    {
        cout << vector1[i] << " ";
    }
   
    return 0;
}

二维数组的动态建立及输入,并输出验证

#include <iostream>
#include <vector>

using namespace std;

int main(){
    int r = 0, c = 0;
    cout << "row:";
    cin >> r; //输入二维数组的行数
    cout << "col:";
    cin >> c;//输入二维数组的列数

    vector<vector<int> >array;//定义二维数组
    vector<int>v;//定义一维数组
    array.clear();//将二维数组清空,即初始化
    int temp = 0;
    cout << "数组元素值:";
    for (int i = 0; i < r; i++)//输入r*c的二维数组
    {
        v.clear();//子数组返回时要清除
        for (int j = 0; j < c; j++)
        {
            cin >> temp;
            v.push_back(temp);
        }
        array.push_back(v);
    }
    
    //输出验证
    for (int i = 0; i < r; i++)//打印输入的二维数组
    {
        for (int j = 0; j < c; j++)
        {
            cout << array[i][j] << " ";
        }
        printf("\n");
    }
   
    return 0;
}

引用

C++数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值