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容器中insert和erase的用法。结合输出答案,大家总结这两个函数的用法。
vector容器是一个功能非常强大的容器。在实际应用中完全可以取代传统的数组。C++中容器还有很多,像map、list、deque、array等。这些容器的使用大大减轻我们对内存使用的管理和数据的处理。大力推荐大家在实际写程序中多用容器。
练习
上机把这节课的示例都练习熟练。