深入浅出之数组

2023-09-21 01:52:14

深入浅出之数组

一、数组的基本语法

1.1 数组声明

数组声明通常为value name[number]的形式。value是值得数据类型,name是数组名称,number是数组的大小。若现在我们需要声明一个数据空间大小为5的数组,我们需要写出以下代码1

int a[5];

此时在我们的内存中,为此数组开辟了5个空间大小。并从下标 0 0 0开始命名。2所以引索值最多到 4 4 4,否则将会超出数组边界。

若此时直接打印出数组内的值,将会得到 − 32768 ~ 32767 -32768~32767 32768327673范围内的随机值。所以我们需要将数组进行初始化。

1.2 数组初始化

数组初始化的语法为value name[number]={value_arg1,value_arg2}。value_arg指的是对应数据类型的具体值,多个值之间用逗号隔开。

同时数组的初始化分为局部初始化和完全初始化。同样以5个空间大小的数组为例,我们输入代码:

int a[5]={1};

此时我们向数组a提供了一个值,此时数组内的a[0]为 1 1 1,其余位数均被赋值为 0 0 0。同样我们操作以下代码:

int a[5]={1,2};

这样a[0]和a[1]分别被赋值上 1 1 1 2 2 2,若将第一位赋值为 0 0 0,那整个数组将会初始化为 0 0 0

讲完了局部初始化数组,完全初始化即是将所有的数组空间初始化,例如:

int a[5]={1,2,3,4,5};

二、多维数组

2.1 多维数组的基本语法

多为数组的语法与一维数组的语法基本一致,此处用二维数组进行演示。多维数组的语法结构为value name[number][number]。

在图像化中,可以看作为一个 n × m n×m n×m矩形,每一个 k × k k×k k×k的方块代表一个数组。

但是在内存中,还是以长条的形式分布,因此该数组的地址依旧遵循线性分布。

2.2 多维数组的适用场景

多维数组可以在大量数据检索中,将指定组设为判断条件,其余为储存数据,大大提升开发效率。

三、数组的实际练习(传智杯真题为例)

[传智杯 #3 决赛] 课程

题目背景

disangan233 喜欢数数,于是他想让你帮他回答一个问题。

题目描述

传智专修学院提供 A , B A,B A,B 两个课程,分别有 n , m n,m n,m 个学生报名。报名 A A A 的学生的编号为 a n a_n an,报名 B B B 的学生的编号为 b m b_m bm,求有多少个学生同时报名了两个课程。

对于所有数据, n , m , a i , b i ≤ 20 n,m,a_i,b_i\leq 20 n,m,ai,bi20,保证每个课程报名的学生编号不会重复。

输入格式

输入共 3 3 3 行。

1 1 1 行输入 2 2 2 个正整数 n , m n,m n,m

2 2 2 行输入 n n n 个正整数 a 1 … a n a_1\ldots a_n a1an,表示报名课程 A A A 的学生编号。

3 3 3 行输入 m m m 个正整数 b 1 … b m b_1\ldots b_m b1bm,表示报名课程 B B B 的学生编号。

学生编号不保证从小到大排序。

输出格式

输出共 1 1 1 1 1 1 个整数,表示答案。

样例 #1

样例输入 #1

5 5
1 2 3 4 5
1 3 4 5 6

样例输出 #1

4

提示

样例解释

我们发现, 1 , 3 , 4 , 5 1,3,4,5 1,3,4,5 4 4 4 名学生同时报名了两门课程,所以答案是 4 4 4


题目详解:

分析题目,可知AB两个课程均有 m m m n n n个人报名,因此在此处可以建立ab两个数组后,进行比较相同元素即可。代码如下:

#include <iostream>
using namespace std;
int main(){
    int n,m,ans=0;
    int a[20],b[20];
    cin>>n>>m;
    for(int i=0;i<n;i++) cin>>a[i];
    for(int i=0;i<m;i++) cin>>b[i];
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(a[i]==b[j]) ans++;
        }
    }
    cout<<ans;
    return 0;
}

  1. 本文的代码皆由C++语言进行演示 ↩︎

  2. 数组是有线性表所构建,因此从数字0开始算起 ↩︎

  3. 此范围由int的范围决定 ↩︎

更多推荐

【C++ Efficiency】lazy evaluation(缓式评估)的4种用途

lazyevaluation(缓式评估)以某种方式撰写你的classes,使它们延缓运算,直到那些运算结果刻不容缓被迫切需要为止。lazyevaluation的4种用途1.ReferenceCounting(引用计数)classString{};//string类Strings1="Hello";Strings2=s1

Java版的数据结构——栈和队列

目录1.栈(Stack)1.1概念1.2栈的使用1.3栈的模拟实现1.4栈的应用场景1.4.1改变元素的序列1.4.2将递归转化为循环2.队列(Queue)2.1概念2.2队列的使用2.3队列模拟实现2.4循环队列3.双端队列(Deque)1.栈(Stack)1.1概念栈:一种特殊的线性表,其只允许在固定的一端进行插入

【Spatial-Temporal Action Localization(六)】论文阅读2021年

文章目录1.MultiSports:AMulti-PersonVideoDatasetofSpatio-TemporallyLocalizedSportsActions摘要和结论引言:针对痛点和贡献数据特点2.Actor-Context-ActorRelationNetworkforSpatio-TemporalAct

性能测试 —— Tomcat监控与调优:Jconsole监控

JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(JavaVM),提供在Java平台上运行的应用程序的性能和资源消耗的信息。在Java平台,标准版(JavaSE平台)6,JConsole的已经更新到目前的外观,类似于Windows和GNOME桌面(其他

(2) Java 8 实战第二版——补充 收集数据、并行数据处理能力与性能

第6章用Collectors类创建和使用收集器将数据流归约为一个值汇总:归约的特殊情况数据分组和分区开发你的自定义收集器对一个交易列表按货币分组,获得该货币的所有交易额总和(返回一个Map<Currency,Integer>)。将交易列表分成两组:贵的和不贵的(返回一个Map<Boolean,List>)。创建多级分组

1397: 图的遍历——广度优先搜索

题目描述广度优先搜索遍历类似于树的按层次遍历的过程。其过程为:假设从图中的某顶点v出发,在访问了v之后依次访问v的各个未曾被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。若此时图中尚有顶点未

什么是Verilog?

什么是Verilog?Verilog是一种以代码形式来描述数字系统和电路的硬件描述语言(HDL)。它由GatewayDesignAutomation在20世纪80年代中期开发,后来被CadenceDesignSystems收购。Verilog广泛用于数字和混合信号系统的设计和验证,包括专用集成电路(ASIC)和现场可编

MeterSphere压测,出现HttpHostConnectException

现象:MeterSphere更换压力机后,压测出现出现HttpHostConnectException解决方案:net.ipv4.tcp_tw_reuse默认是0或者2,更改为1net.ipv4.tcp_tw_reuse,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接;那么,当连接被复用

成都瀚网科技有限公司:抖店平台买家怎么修改评价?

在抖音电商平台上,买家的评价对店铺的声誉和销售业绩有着重要影响。然而,有时买家可能会因为某些原因想要修改之前的评价。那么,抖店平台上的买家如何修改评价呢?修改评价对店铺有什么影响?本文将介绍买家如何修改评价。并探讨可能的影响。1.如何修改抖店评论在抖店平台上,买家可以通过以下步骤修改之前的评论:A。打开抖音APP并登录

python项目2to3方案预研

目录官方工具2to3工具安装参数解释基本使用工具缺陷future工具安装参数解释基本使用工具缺陷python-modernize工具安装参数解释基本使用工具缺陷pyupgrade工具安装参数解释基本使用工具缺陷对比官方工具2to32to3是Python官方提供的用于将Python2代码转换为Python3代码的工具。它

Docker compose

文章目录Dockercompose1.介绍2.为什么要DockerCompose3.DockerCompose文件(docker-compose.yml)imagecommandentrypointenvironmentnetworksvolumesportsexposedepends_onenv_file4.Dock

热文推荐