CMNSOFT平台
06.数组
发表时间:2026-01-03 21:55:35    作者:孙自超

数组就是一块连续存储数据的空间。不同的编程语言对其有不同的称呼。Python里叫“列表”或“元组”;C++里叫“数组”。

认识数组

想像一下,有4个抽屉排成一排。你可以往每个抽屉放不同的物件(小玩具或文具)。你还给这4个抽屉编了序号,序号从0开始。分为0-3号抽屉。你想拿物件时,只需要说出物件所存放的序号即可。 这四个抽屉就是一个数组抽屉[0]:铅笔;抽屉[1]:小熊;抽屉[2]:橡皮抽屉[3]:削笔刀。

思考一下:抽屉[4]里面有什么呢?

数组的序号也称为下标。它是个正整数,最小值是0。如果下标值大于数值的空间,那就叫访问越界。轻则程序输出错误答案,重则程序崩溃。一定要小心使用。


示例

1.数组的定义

在Python中,数组有两种定义方式。列表和元组。列表用中括号,元组用小扣号。

a = [10,20,30,40] b = (10,20,30,40) print(len(a)) print(len(b)) print(a[2]) print(b[2]) 4 4 30 30

len函数作用是输出数组中元素的个数。

列表和元组除了定义时用的扣号不一样,他们访问元素方法是一样的。

2.数组元素的修改

Python数组支持追加、插入和删除三种修改操作,我们通过例子演示这些操作。

buf = [1,2,3,4,5] #追加,在列表末尾增加新元素 buf.append("A") print(buf) #插入,在列表指定下标插入新元素 buf.insert(3,0) print(buf) #删除,删除列表指定下标的元素 buf.pop(2) print(buf)

Python中的一个数组可以存储不同数据类型的元素。

[1,2,3,4,5,A] [1,2,3,0,4,5,A] [1,2,0,4,5,A]

1.数组的定义

在C/C++中,数组必须先定再使用。而且数组的数据类型和长度是固定的。可以改变元素的值,不能增加和删除其中的元素修改。

#include<bits/stdc++.h> using namespace std; int main() { int a[] = {1,2,3,4}; int b[3]; b[0] = 1; b[1] = 3; b[2] = 5; cout<<sizeof(a)/sizeof(int)<<endl; cout<<sizeof(b)/sizeof(int)<<endl; return 0; }

上面代码第6、7行是两种定义数组的方式。第6行,定义一个整型数组,并赋了4个初值;第7行,定义了一个可存储3个整数的数组。3个整数并没赋予初值,默认可能为0。第9-11行才给3个元素赋值。第13和第14行是计算两个数组里各有几个元素(求数组的长度)。

4 3

C++这种定义后数组长度就不能修改的方式属于静态数组。这种数组不够灵活,使用很不方便。C++还一些动态数组的定义方式。接下来我们将介绍其中。

2.vector容器

在c++的标准模板库中,有一个叫vector的容器。一种专门用来动态存储、组织数据的对象。下面我们给出一个使用示例。

定义

#include<bits/stdc++.h> using namespace std; int main() { vector<int> a = {1,2,3,4}; vector<int> b; b.push_back(1); b.push_back(3); b.push_back(5); cout<<a.size()<<endl; cout<<b.size()<<endl; return 0; }

上面代码第6、7行是两种定义整型vector容器的方式。第6行,定义一个整型vector容器,并赋了4个初值;第7行,定义了一个空的整数vector容器。这个容器现在是空的。第9-11行才给容器增加3个元素。第13和第14行是计算两个容器里各有几个元素(求容器的长度)。

4 3

使用方法

#include<bits/stdc++.h> using namespace std; int main() { vector<int> a = {10,52,13,24}; cout<<a[0]<<","<<a[1]<<","<<a[2]<<","<<a[3]<<","<<endl; a.insert(2,22) cout<<a[0]<<","<<a[1]<<","<<a[2]<<","<<a[3]<<","<<a[4]<<endl; a.erase(a.begin()+2); cout<<a[0]<<","<<a[1]<<","<<a[2]<<","<<a[3]<<","<<endl; a.erase(a.begin(),a.begin()+2); cout<<a[0]<<endl; return 0; } 10,52,13,24 10,52,22,13,24 10,52,13,24 24

上面例子演示了vector容器中inserterase的用法。结合输出答案,大家总结这两个函数的用法。

vector容器是一个功能非常强大的容器。在实际应用中完全可以取代传统的数组。C++中容器还有很多,像map、list、deque、array等。这些容器的使用大大减轻我们对内存使用的管理和数据的处理。大力推荐大家在实际写程序中多用容器。


练习

上机把这节课的示例都练习熟练。


@程序设计
Copyright © 2025 Sun zi chao - Website Content All Rights Reserved.  [第六版]
桂ICP备11003301号 桂公网安备45040302000027号