首页 > 编程语言 >数组的概念(C++)

数组的概念(C++)

时间:2024-10-21 19:16:31浏览次数:9  
标签:存储 索引 元素 arr C++ 概念 数组 大小

        今天介绍一下数组。

在C++中,数组就是一种用于存储相同类型元素的容器,也是一种数据结构,在编程中被广泛使用。

一、定义与组成

        数组是由相同类型的元素组成的集合,这些元素在内存中是连续存储的。例如,一个整数数组可以存储多个整数,一个字符数组可以存储多个字符。它的定义方式有两种,首先时可以指定数组大小和初始值,例如:   int arr[5] = {1,2,3,4,5};    也可以先定义数组大小再赋值,例如:

int arr[5];

arr[0] = 1;

其次还可以使用动态内存分配来创建数组,如 int *arr = new int[size];   使用完成后需要使用  delete[] arr;   释放内存。

二、特点

1.存储连续性:        由于元素在内存中连续排列,这使得索引能够快速访问特定位置的元素。例如,对于一个包含 10 个整数的数组,访问第5个元素的时间是相对固定且高效的。

2.固定大小:在创建数组时通常需要指定大小,一旦确定后,数组的大小就不能轻易改变。这既是优点也是缺点,优点是可以提前规划好内存的使用,缺点是在需要动态调整大小的时候会比较麻烦。

三、操作

1.初始化:        可以在定义数组时进行初始化,如    int arr[5] = {1,2,3,4,5}; 也可以在后续的代码中逐个元素赋值。

2.访问元素:通过索引来访问数组中的元素,索引从0开始。例如,arr[2]表示访问数组arr中的第三个元素。

3.遍历L可以使用循环来遍历数组中的所有元素,以便于进行各种操作,例如求和,查找最大值等。

四、应用场景

1.存储一组相关的数据:   比如存储学生成绩,一组坐标点等。

2.在算法和数据结构中:  例如用于现实排序算法,查找算法等,作为基础的数据存储结构。

3.图形处理:存储图像的像素值等数据。

 

数组和其它容器的区别:

一、存储方式

1.数组:在内存中连续存储,通过索引可快速访问特定位置的元素。

2.向量(vector):  通常也是连续存储,但可以动态调整大小,当需要更多空间时会重新分配内存并赋值现有元素。

3.列表(list): 通常以链表形式存储,元素在内存中不一定连续,插入和删除操作在特定位置时效率较高。

二、大小灵活性

1.数组:大小在定义时固定,改变大小较为麻烦,可能需要手动重新分配内存或复制元素。

2.向量:可以动态增长或收缩,使用方便,无需担心大小限制。

3.列表:可以方便的插入或删除元素,大小自动调整。

三、访问方式

1.数组:通过索引直接访问,速度非常快,时间复杂度为0(1)。

2.向量:类似于数组,通过索引访问速度也很快,但是在重新分配内存时可能会影响性能。

3.列表:不能通过索引直接访问,需要遍历列表找到特定位置的元素,时间复杂度为0(n).

四、插入和删除操作

1.数组:在中间位置插入或删除元素效率低,需要移动大量元素,时间复杂度为0(n)。

2.向量:在尾部插入和删除元素效率高,但在中间位置操作也需要移动元素,时间复杂度与移动的元素数量有关。

3.列表:在任意位置插入和删除元素效率高,只需要修改几个指针,时间复杂度为0(1)。

五、函数参数传递

1.数组:传递时实际上传递的时指针,容易出现越界等问题。

2.向量和列表:通常作为对象传递,更安全和方便。

总的来说,数组简单直观但灵活性较差,而向量和列表等容器提供了更多的功能和灵活性,但可能在性能上有一些差异,具体使用哪种容器需要根据具体的应用场景来决定。

 

标签:存储,索引,元素,arr,C++,概念,数组,大小
From: https://blog.csdn.net/qq_59840326/article/details/143083055

相关文章

  • C++程序设计基础实验1
    任务一:源代码task1.cpp#include<iostream>#include<string>#include<vector>#include<algorithm>usingnamespacestd;//声明//模板函数声明template<typenameT>voidoutput(constT&c);//普通函数声明voidtest1();voidtest2();void......
  • C++研发笔记4——C语言程序设计初阶学习笔记2
            从今天开始我们开始第二模块初识C语言的学习,在本模块中我们将会涉及到一下14个内容:什么是C语言、第一个C语言程序、数据类型、变量、常量、字符串+转义字符+注释、选择语句、循环语句、函数、数组、操作符、常见关键字、define定义常量和宏、指针......
  • HTTP和HTTPS基本概念,主要区别,应用场景
    HTTP和HTTPS是用于在网络中传输数据的协议,虽然它们的功能类似,但在安全性上存在显著差异。1. HTTP的基本概念定义:HTTP是一种无状态的、面向请求-响应的协议,用于客户端(如浏览器)和服务器之间传输超文本数据(HTML、CSS、JavaScript等)。工作原理:客户端向服务器发送请求,服务器处......
  • 【java】实现字节数组转int(采用IEEE 754标准)
    /***字节数组转int*采用IEEE754标准**@parambytes*@returnfloat*/publicintbytesToInt(byte[]bytes){//获取字节数组转化成的2进制字符串StringbinaryStr=bytesToBinaryStr(bytes);//......
  • 代码随想录算法训练营第六天| leetcode242.有效的字母异位词、leetcode349.两个数组的
    1.leetcode242.有效的字母异位词题目链接:242.有效的字母异位词-力扣(LeetCode)文章链接:代码随想录视频链接:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词_哔哩哔哩_bilibili自己的思路:首先就是对字符串进行分开成一个一个单独的字母,然后使用列表存储这些数据,再对......
  • GCN(图卷积神经网络)中的**信息聚合**和传统聚类算法是不同的概念,尽管它们都涉及到将某
    GCN(图卷积神经网络)中的信息聚合和传统聚类算法是不同的概念,尽管它们都涉及到将某些对象的信息整合在一起。下面我将详细解释两者的差异:1.GCN中的信息聚合GCN中的信息聚合过程是节点级别的邻居信息融合,主要目的是通过图的拓扑结构更新节点的特征表示。每个节点通过其邻......
  • C++静态成员变量和静态成员函数的使用
    1.静态成员变量:定义在类中的静态成员,以static关键字初始化和成员变量区别:a.可以通过类名::变量名进行调用,可访问性还是由(public,private,protected)进行限制 例如下面的mystaitcClass::_id,protected属性内容无法直接进行访问,若要直接访问需要修改为public2.静态成员函数:类似可以通过......
  • 07安装过程中的基本概念
    每天五分钟学Linux|第七课:安装过程中的基本概念大家好!欢迎再次加入我们的“每天五分钟学Linux”系列教程。在之前的课程中,我们介绍了如何使用LiveCD/USB来体验Linux。今天,我们将进一步深入,讲解在安装Linux过程中的一些基本概念,如分区和文件系统等。理解这些概念对于顺利......
  • 数组的往返(数组来回遍历)C语言版
    文章目录前言题目描述一、数组的往返是什么?二、实现1.具体代码2.完整题解代码总结以及一些疑问前言本篇文章灵感来源于第十三届蓝桥杯省赛C++B组第六题修剪灌木,我的方法是老老实实地走完这个流程得到答案题目描述爱丽丝要完成一项修剪灌木的工作。有N棵灌......
  • 集合基本概念
    集合1、集合与元素集合:由一个或多个确定的元素所构成的整体,是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。元素:构成集合的这些对象则称为该集合的元素。例如,全中国人的集合,它的元素就是每一个中国人。例如,{1,3,5}是一个集合,3是该集合的元素。2、空集有一类......