C++数组 ╰+攻爆jí腚メ 2022-12-12 04:47 86阅读 0赞 ### C++数组 ### C++数组(array)是一种顺序容器sequence container,是由单一数据类型元素组成的一个有序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。对数组元素的访问是通过下标(subscript)操作符,按元素在数组中的位置进行访问,称为索引访问(indexing)或下标访问(subscripting)。数组是一种组合类型,是不能作为一个整体进行访问和处理的,只能按元素进行个别的访问和处理。 **C++中的一维数组** 声明数组 在C++在声明一个数组,需要指定元素的类型和元素的数量,格式如下: 数据类型 数组名\[元素数量\]; 上面声明的格式是一维数组的声明,其中元素个数必须是一个大于0的整型常量,数据类型可以是任意有效的C++数据类型。如声明一个类型为double的包含10个元素的数组myA,声明语句是: double myA\[10\]; 注意,数组以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。 初始化数组 在C++中,可以逐个初始化数组,也可以使用一个初始化语句,如下所示: double myA\[5\] = \{1000.0, 2.0, 3.4, 7.0, 50.0\}; 大括号\{ \}之间的值的数目不能大于在数组声明时在方括号\[ \]中指定的元素数目。 如果省略掉了数组的大小,数组的大小则为初始化时元素的个数。因此,如果是下面的格式,将创建一个数组,它与前一个实例中所创建的数组是完全相同的 double myA\[\] = \{1000.0, 2.0, 3.4, 7.0, 50.0\}; 为数组中某个元素赋值的实例,下面的语句把数组中第五个元素的值赋为666.6。所有的数组都是以0作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去1。 myA\[4\] = 666.6; 访问数组元素 数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。例如: double salary = myA\[3\]; 声明数组、初始化数组、访问数组元素实例如下: \#include "iostream" \#include "iomanip" using namespace std; using std::setw; // setw() 函数来格式化输出 int main()\{ int a\[10\]; // 声明一个包含10个元素的整型数组 // 初始化数组 for (int i = 0; i < 10; i++) a\[i\] = i + 100; cout << "元素索引" << setw(13) << "元素值" << endl; // 输出数组中的每个元素 for (int j = 0; j < 10; j++) cout << setw(7) << j << setw(13) << a\[j\] << endl; return 0; \} 运行之,参见下图: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70][] **C++中的多维数组** 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)的二维数组,示意如下: ![20201006085642402.png][] 数组中的每个元素是使用形式为a\[i\]\[j\]的元素名称来标识的,其中a是数组名称,i和j 是唯一标识a中每个元素的下标。 初始化二维数组 int a\[3\]\[4\] = \{ \{0, 1, 2, 3\}, /\* 初始化索引号为 0 的行 \*/ \{4, 5, 6, 7\}, /\* 初始化索引号为 1 的行 \*/ \{8, 9, 10, 11\}, /\* 初始化索引号为 2 的行 \*/ \}; 内部嵌套的括号是可选的,下面的初始化与上面是等同的: int a\[3\]\[4\] = \{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11\}; 访问二维数组元素 二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。例如: int val = a\[2\]\[3\]; 例、使用嵌套循环来处理前面定义的二维数组: \#include <iostream> using namespace std; int main () \{ // 一个带有 3 行 4列的数组 int a\[3\]\[4\] = \{ \{0, 1, 2, 3\}, /\* 初始化索引号为 0 的行 \*/ \{4, 5, 6, 7\}, /\* 初始化索引号为 1 的行 \*/ \{8, 9, 10, 11\}, /\* 初始化索引号为 2 的行 \*/ \}; // 输出数组中每个元素的值 for ( int i = 0; i < 3; i++ ) for ( int j = 0; j < 4; j++ ) \{ cout << "a\[" << i << "\]\[" << j << "\]: "; cout << a\[i\]\[j\]<< endl; \} return 0; \} 运行之,参见下图: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70 1][] **C++数组的动态建立及输入** 这涉及到vector容器的使用,故简要介绍之。vector容器:能够存放任意类型的动态数组,常用基本操作: 1)头文件\#include<vector> 2)创建一维vector对象,vector<int> vec;二维vector<vector<int>> 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开始。 8)向量大小:vec.size()。 9)清空:vec.clear()。 10)初始化赋值: 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赋值 11)判断是否为空: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; \} 运行之,参见下图: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70 2][] 再看二维数组的动态建立及输入,并输出验证的例: \#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; \} 运行之,参见下图: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70 3][] 最后,简单介绍三维数组。 array\[a\]\[b\]\[c\] 如何理解三维数组含义:可以理解为该数组有a页,每一页都有一个b行c列的二维数组。参见下图: ![20201012173034512.png][] 声明三维数组,如: int myarray\[2\]\[3\]\[4\]; 初始化数组: int arr\[2\]\[3\]\[4\] = \{1, -1 ,2 ,-2 , 3 , -3, 4, -4, 5, -5, 6, -6, 7,-7,8,-8,9,-9,10,-10,11,-11,12,-12\}; 三维数组示例 \#include <iostream> using namespace std; int main()\{ // initializing the array int arr\[2\]\[3\]\[4\] = \{1, -1 ,2 ,-2 , 3 , -3, 4, -4, 5, -5, 6, -6, 7,-7,8,-8,9,-9,10,-10,11,-11,12,-12\}; // displaying array values for (int x = 0; x < 2; x++) \{ cout <<"第"<< x << "层"<< endl; for (int y = 0; y < 3; y++) \{ for (int z = 0; z < 4; z++) \{ cout<<arr\[x\]\[y\]\[z\]<<" "; \} cout << endl; \} \} return 0; \} 运行之,参见下图: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70 4][] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70]: /images/20221123/10f0cb1d74a8425288cdf54f3a80fae4.png [20201006085642402.png]: /images/20221123/54fba14736444ada9899886968008ca7.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70 1]: /images/20221123/3c0f61ca627d4ff4aa5494e4038e78a5.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70 2]: /images/20221123/5417c4d488c34ad78d89ea5e2cb0cb08.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70 3]: /images/20221123/7b0db3530c3a4b528cca5a4e6758ad3b.png [20201012173034512.png]: /images/20221123/87543cd7881d47f19d1ddb7d3bb70ed8.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NuZHMxMjM_size_16_color_FFFFFF_t_70 4]: /images/20221123/1db8edede4c144c79c3c820922ab291b.png
相关 C# 数组 定义 数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。 声明方式 方式一: int 男娘i/ 2023年10月17日 23:36/ 0 赞/ 46 阅读
相关 C++ 数组 C++ 数组 C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不 亦凉/ 2023年10月13日 10:29/ 0 赞/ 9 阅读
相关 C++数组 C++数组 C++数组(array)是一种顺序容器sequence container,是由单一数据类型元素组成的一个有序集合。数组是用来存储一系列数据,但它往往被认为是 ╰+攻爆jí腚メ/ 2022年12月12日 04:47/ 0 赞/ 87 阅读
相关 c#数组 可一次性存储多个相同类型的变量,(这里区别于结构,它是一次性存储多个不同类型的变量) 语法: 数组类型\[ \] 数组名 = new 数组类型\[ 数组长 忘是亡心i/ 2022年12月10日 03:53/ 0 赞/ 80 阅读
相关 C#——数组 C\——数组 一、数组的声明 > 例如:int\[\]nums = \{5,3,8\} 类型后加\[\],就是这个类 超、凢脫俗/ 2022年08月26日 04:47/ 0 赞/ 88 阅读
相关 数组【C#】 数组的概念: 所谓数组,是相同数据类型的元素按一定顺序排列的集合。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素 不念不忘少年蓝@/ 2022年06月15日 06:46/ 0 赞/ 86 阅读
相关 c#---数组 前言 很早之前我们就接触过数组,那您对数组的了解到底有多少呢?今天我们再来一起学习一下! 是什么 数组是一次性声明多个相同类型的变量(小扩充:结构体是一次 傷城~/ 2022年05月26日 12:46/ 0 赞/ 83 阅读
相关 C#数组 using System; using System.Collections.Generic; using System.Linq; using 柔光的暖阳◎/ 2022年01月26日 16:31/ 0 赞/ 157 阅读
相关 C# 数组 数组结构与声明 int数组:`int[] num = new int[10];` ![在这里插入图片描述][20190724145308272.png] string 今天药忘吃喽~/ 2021年11月27日 07:10/ 0 赞/ 231 阅读
相关 C/C++——数组 C/C++——数组 处理少量数据的时候,可以采用直接int的方法,但是处理大量数据,假设有100个数据,不可能去int100个变量,这样开发效率会十分低下。这种时候就要使 不念不忘少年蓝@/ 2021年11月09日 23:34/ 0 赞/ 332 阅读
还没有评论,来说两句吧...