认识vector
哇,第51课认识vector可有趣啦😉!vector是标准库中常见的一种动态序列容器,它就像是可变大小数组的序列容器,可以用来代替C++原本的数组哟。
就好比数组呢,就像是一个线段,它的长度是固定的,不能再延伸啦。而vector就像是射线,当它的空间不够用的时候,就可以往后延伸,它的大小是可以动态改变的,而且它的大小会被自动处理呢👏。
比如说有一个场景,你要记录班级里同学们的考试成绩。一开始你不知道有多少同学参加考试,用普通数组的话,你得先预估一个比较大的空间,要是预估小了,成绩就装不下啦。但如果用vector,你就不用操心这个问题,它会根据实际的同学数量来动态调整空间,是不是很方便😎?
再比如,你在收集不同种类的卡片,一开始你也不知道自己能收集到多少张卡片。用普通数组的话,你得提前确定一个固定的数量来存放卡片信息,可要是后面收集的卡片超过这个数量,就不好办了。但用vector,它会自动根据你收集卡片的数量来调整空间,让你轻松记录每一张卡片的信息🥰。
vector也和数组一样,采用连续存储空间来存储元素,这就意味着可以采用下标对vector的元素进行访问,和数组一样高效呢。
vector<int> v;
vector<int> v; 就像是我们创造了一个专门用来装整数的“魔法口袋”。
vector 本身就是一个很厉害的容器,它就像一个可以伸缩的口袋,能根据我们的需要变大或者变小。<int> 好比是口袋上贴的一个小标签,上面写着“只能装整数”,所以这个口袋只能装像 1、2、3、 -1、 -2 这类的整数,不能装别的东西。
而 v 就是我们给这个口袋取的名字,有了这个名字,我们就能很方便地找到它,往里面放东西或者拿东西。
再给你举两个生活中的例子帮助理解。
第一个例子是图书馆的书架📚。有一个书架专门用来放数学课本,这个书架就像是 vector<int>,数学课本就是整数,而书架上的编号就像是 v,我们通过编号就能快速找到这个专门放数学课本的书架。
第二个例子是存钱罐🎯。有一个存钱罐只能放一元的硬币,不能放五角的或者其他的东西。这个存钱罐就像是 vector<int>,一元硬币就是整数,存钱罐上贴的小主人的名字就像是 v,小主人通过这个名字就能知道这是自己专门存一元硬币的存钱罐。
v.push_back (x)
嘿,同学😃!v.push_back (x) 这个方法呀,就像是给一个小盒子的最后面再放进去一个新东西。
在 C++ 里呢,v 就好比是一个可以装好多东西的盒子,这个盒子可以装整数哦。而 push_back (x) 就是把 x 这个东西放到盒子的最后面。
咱们来举两个生活中的例子🌰:
例子一:排队买冰淇淋🍦
想象一下,你和你的小伙伴们在排队买冰淇淋。这个队伍就像我们的 v 盒子,每个小伙伴就是盒子里的一个元素。突然又来了一个新的小伙伴,他要排到队伍的最后面。这就相当于 v.push_back (x) 啦,这个新小伙伴就是 x,他被放到了队伍(也就是盒子)的最后面。
在代码里呢,就像这样:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v; // 创建一个空的盒子
v.push_back(1); // 第一个小伙伴排进来啦,就像把 1 放到盒子里
v.push_back(2); // 第二个小伙伴也排进来啦,把 2 放到盒子最后面
v.push_back(3); // 第三个小伙伴也来排队咯,把 3 放到盒子最后面
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " "; // 看看队伍里的小伙伴都有谁
}
return 0;
}
在这个代码里,每次使用 v.push_back (x) 就相当于有新的小伙伴排到队伍的最后面。
v.insert(pos,x)
同学们,今天咱们来聊聊 v.insert (pos,x) 这个在 C++ 里很有用的小工具😎。
它是什么
v.insert (pos,x) 就像是一个神奇的小魔法师🧙♂️,它能把元素 x 插入到 v 这个“队伍”里,而且是插在 pos 所指向的元素前面哦。
生活中的例子
排队买冰淇淋🍦
想象一下,你们在学校门口的冰淇淋店排队买冰淇淋。这个队伍就像是咱们的 v。突然,你的好朋友来了,他也想吃冰淇淋,但是队伍已经排得挺长了。这时候,你跟前面队伍里的一个同学说,让你的好朋友插到他前面。这里,这个同学所在的位置就是 pos,你的好朋友就是元素 x。用 v.insert (pos,x) 就可以轻松实现这个插入的动作啦。
在 C++ 里,如果 v 是一个存储数字的“队伍”,pos 就是这个队伍里某个位置的“指针”,x 就是要插入的数字。比如,原来的队伍是 [1, 2, 3, 4],现在你想把数字 5 插到第 2 个位置(这里位置从 0 开始算哦),就可以用 v.insert (v.begin() + 1, 5),这样队伍就变成了 [1, 5, 2, 3, 4]。
书架上摆书📚
再想象一下,你有一个书架,上面已经摆满了各种有趣的书,这个书架就相当于 v。现在你又买了一本新书,你想把它插到书架上某个位置。比如说,你想把新书插到第 3 本书的前面。这里,第 3 本书所在的位置就是 pos,新书就是 x。同样用 v.insert (pos,x) 就能完成这个操作啦。
在代码里,如果 v 是存储书名字的“书架”,每个书名对应一个元素。你用 v.insert (pos,x) 就能把新书插到指定位置,这样书架上的书就重新排列好啦😃。
这样是不是就很好理解 v.insert (pos,x) 的作用啦🥰!
哎呀,刚刚设置语音情感的时候出了点小问题😔。我重新来设置语音合成,这次不设置情感参数啦。
我已经成功为你生成了语音讲解,你可以点击下面的链接下载音频:
- Status
- Done
- Rule
- ACM/ICPC
- Problem
- 6
- Start at
- 2025-10-28 23:15
- End at
- 2025-10-29 9:15
- Duration
- 10 hour(s)
- Host
- Partic.
- 28