小学生学C++编程语法知识(STL容器(2、认识Vector(动态数组)))
2026/7/16 23:47:54 网站建设 项目流程


STL容器课程

第二课 《无限成长盒——认识Vector(动态数组)》


第一幕:魔法盒子诞生

1、很久很久以前。

(1)程序王国里。

小程序员小C已经学会了数组。

他十分开心。

因为数组可以保存很多很多数据。


(2)例如:

保存五个数字。

int a[5];

保存十个数字。

int a[10];

保存一百个数字。

int a[100];

(3)可是……

有一天。

国王交给了他一个新任务。


2、国王的新任务

(1)国王说:

今天有一些小朋友来报名参加编程比赛。

一开始来了:

3个人。


后来又来了:

5个人。


下午。

又来了:

20个人。


晚上。

又来了:

100个人。


(2)小C办理登记。

他说:

"我用数组!"


开始写下:

int student[10];

开始保存。

可是……

到了第11个学生。

程序停住了。

因为:

盒子满了!


3、思考一下

如果数组只能放10个人。

后来来了100个人。

怎么办?

学生通常会回答:

"开一个更大的数组!"


例如:

int student[100];

老师继续问:

那原来的10个人怎么办?

是不是还要:

一个一个复制过去?


如果后来来了1000个人呢?

是不是又要重新复制?

孩子很快就会发现:

数组好像不太方便。


第二幕:魔法工程师发明了Vector

1、就在大家发愁的时候。

程序王国最厉害的工程师来了。

他说:

"不用重新开盒子。"

"我发明了一个自己会长大的盒子。"

它的名字叫:

Vector(动态数组)


2、为什么叫动态数组?

因为:

它和数组一样。

也是按顺序保存数据。

但是:

空间不够的时候。

它会自己长大!


3、所以:

Vector还有一个中文名字:

动态数组。


第三幕:请出Vector

1、和以前一样。

想使用一个工具。

必须先把工具请出来。

#include <iostream> #include <vector> using namespace std;

2、以前:

int a[100];

是数组。


3、今天:

vector<int> a;

就是动态数组。


第四幕:创建第一个Vector

vector<int> score;

1、vector

表示:

我要使用动态数组。


2、int

里面保存整数。


3、score

变量名字。

整个意思就是:

创建一个可以保存很多整数<int>的动态数组 vector 的对象,它的名字叫score。


第五幕:往盒子里放东西——push_back()

1、现在盒子是空的。

放进去一个数字。

score.push_back(95);

再放。

score.push_back(88);

继续放。

score.push_back(100);

这时候。

盒子里面就是:

95 88 100

2、第一个完整程序

#include <iostream> #include <vector> using namespace std; int main() { vector<int> score; score.push_back(95); score.push_back(88); score.push_back(100); cout << "成绩如下:" << endl; for (int i = 0; i < score.size(); i++) { cout << score[i] << " "; } return 0; }

输出:

成绩如下: 95 88 100

第六幕:Vector也有下标

1、数组这样访问:

a[2]

Vector呢?

答案:

一样。

score[0] score[1] score[2]

2、访问和数组几乎一样!

这就是Vector最大的优点。


第七幕:有多少个元素?

1、数组:

int a[100];

同学们必须记住:

到底用了几个。

例如利用计数器:

cnt

2、而Vector不用。

直接调用size函数就知道:

score.size()

例如:

cout << score.size();

输出:

3

是不是方便很多?


第八幕:最后一个同学退出比赛——pop_back()

1、假设:

盒子里面。

95 88 100

最后一个人退出。

怎么办?


score.pop_back();

现在:

95 88

是不是很方便?


注意:

只能删除最后一个。


第九幕:看看第一个和最后一个

1、继续介绍两个很有用的成员函数。

(1)取第一个元素

front()

表示:

第一个元素。


例如:

cout << score.front();

输出:

95

(2)取最后一个元素

back()

例如:

cout << score.back();

输出:

88

第十幕:盒子空了吗?

1、想知道里面有没有东西。

怎么办?

直接问。

score.empty()

2、如果为空。

返回:

true

否则:

false

3、例如:

if(score.empty()) { cout<<"盒子空了"; } else { cout<<"还有东西"; }

第十一幕:清空盒子

全部不要了。

score.clear();

一下子全部清空。


第十二幕:课堂小游戏——猜结果

第一题

vector<int> a; a.push_back(3); a.push_back(5); a.push_back(8); cout<<a.size();

答案:

3

第二题

a.pop_back(); cout<<a.back();

答案:

5

第三题

a.clear(); cout<<a.empty();

答案:

1

(true)


第十三幕:魔法整理机器人——Vector排序(sort)


一、使用sort需要的头文件

sort不是Vector里面的成员函数。

它属于:

算法工具(algorithm)

所以。

除了

#include <vector>

还要再请一位帮手。

#include <algorithm>

完整写法:

#include <iostream> #include <vector> #include <algorithm> using namespace std;

二、sort怎么用?

1、常见写法:

sort(a.begin(), a.end());

意思就是:

把a里面所有元素排序。

同学们只需要记住一句口诀:

begin() 是开始。

end() 是结束。


2、所以:

sort(开始,结束);

就是:

从第一个元素。

一直排到最后一个元素。


三、<vector>的排序程序

例如:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> score; score.push_back(95); score.push_back(60); score.push_back(88); score.push_back(100); score.push_back(75); sort(score.begin(), score.end()); cout << "排序后:" << endl; for(int x : score) { cout << x << " "; } return 0; }

运行结果:

60 75 88 95 100

排序前:

95 60 88 100 75

sort以后。

60 75 88 95 100

四、为什么是写begin()和end()?

1、画图

+----+----+----+----+----+ 95 60 88 100 75 ↑ ↑ begin() end()

2、begin()

就是:

第一个元素的位置。


3、end()

不是最后一个元素。

而是:

最后一个元素后面的那个位置。


4、这样写。

sort才能知道:

"我要整理整个盒子。"


五、课堂实践——整理水果价格

1、水果店今天进货。

价格分别是:

12 5 20 8 15

2、老板说:

请按价格从便宜到贵排列。


3、参考程序:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> price; price.push_back(12); price.push_back(5); price.push_back(20); price.push_back(8); price.push_back(15); sort(price.begin(), price.end()); cout << "价格排序后:" << endl; for(int x : price) { cout << x << " "; } return 0; }

输出:

5 8 12 15 20

六、课堂实践——学生成绩排名

1、老师输入5位同学成绩。

例如:

90 75 100 88 95

2、要求:

按照成绩从低到高输出。


3、参考程序:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> score; for(int i = 0; i < 5; i++) { int x; cin >> x; score.push_back(x); } sort(score.begin(), score.end()); cout << "成绩排名:" << endl; for(int x : score) { cout << x << " "; } return 0; }

例如输入:

90 75 100 88 95

输出:

75 88 90 95 100

八、课堂小游戏——猜排序结果

第一题

vector<int> a; a.push_back(5); a.push_back(2); a.push_back(8); a.push_back(1); sort(a.begin(),a.end());

输出:

1 2 5 8

第二题

vector<int> a; a.push_back(30); a.push_back(10); a.push_back(20); sort(a.begin(),a.end());

输出:

10 20 30

第三题

vector<int> a; a.push_back(7); a.push_back(7); a.push_back(3); a.push_back(5); sort(a.begin(),a.end());

输出:

3 5 7 7

sort不会删除重复元素,它只是把元素按顺序排列。


九、本节课总结

今天,我们认识了STL中的自动排序机器人——sort()

不用自己写冒泡排序、选择排序等代码,只需一行代码,就能快速完成排序。

记住今天最重要的两句话:

#include <algorithm>

表示请出排序工具。

sort(a.begin(), a.end());

表示把整个vector从小到大排序。


记忆口诀

整理数据不用愁,sort出手解烦忧;
begin()从头走,end()排到最后头;
一行代码排整齐,Vector 学习更轻松!


第十四幕:什么时候使用Vector?

老师问:

下面这些情况。

应该选择数组。

还是Vector?


情况一

一年级有50名学生。

永远都是50人。

答案:

数组。


情况二

今天来了多少游客。

不知道。

答案:

Vector。


情况三

保存比赛成绩。

人数不断增加。

答案:

Vector。


情况四

保存棋盘:

19×19

固定大小。

答案:

数组。


不是Vector一定比数组好,而是要根据问题选择工具。


总结

今天,我们认识了 STL 中最常用的容器——Vector(动态数组)

它最大的特点是:

  • 大小可以自动增长。

  • 使用方式和数组非常相似。

  • 支持下标访问。

  • 可以方便地在末尾添加和删除元素。

今天学会了 7 个最常用的成员函数:

成员函数作用生活中的理解
push_back(x)在最后放入一个元素往盒子里放一个新玩具
pop_back()删除最后一个元素拿走最后放进去的玩具
size()元素个数数一数盒子里有几个玩具
empty()是否为空看看盒子是不是空的
clear()清空所有元素把盒子里的东西全部倒出来
front()第一个元素看盒子最前面的玩具
back()最后一个元素看盒子最后放进去的玩具

记忆口诀:

数组大小先定好,Vector 长大不用愁;
后面放用push_back(),最后删除pop_back()
size()数数量,empty()看空忙;
front()看最前,back()看最后,学会 Vector 真顺手!


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询