目录
* 第一部分:导言
* 第二部分:什么是动态数组
* 第三部分:vector数组的使用方法
* 第四部分:刷题时光
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
建议先学习SORT排序在来学VECTOR,本文会涉及到SORT排序
第一部分:导言
很多人很会用原生态数组(原生态数组如下)
但是这样子会很费空间,所以我们今天带来了一种新的动态数组——vector数组
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二部分:什么是动态数组
在我们学习原生态数组时,我们知道,数组是要定长的(定义长度),原生态数组一旦定义,就会分配到固定空间
* 比如
这样在程序执行前已经在内存中分配好的空间,不能在程序执行过程中改变,但是在很多情况下,我们炳不知道数组的确切大小,这是可以用动态数组~
vector是C++中的STL库中的动态数组,所谓的动态数组,就是可以在使用过程中自动的扩容,变长,并不需要预先定义好大小哦~
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三部分:VECTOR数组的使用方法
首先我们先知道VECTOR数组的导入库
然后就是学习如何定义VECTOR数组
再然后就是学习如何操作VECTOR数组
* vector的访问
很多小白可能会这样访问
但是这样子你就会喜提一个RE,hhh、
因为我们还没输入任何东西,所以数组会越界获得RE(前文说了他是动态数组)
* vector的输入和删除
如果你想在vector数组是读入数据,就可以使用,push_back方法
注意,push_back是直接推进最后一个如下图
> 推入前
————————————————————
| ———— ———— <---- ————
| |元素1号 | |元素2号| <---- |元素三号|
| ———— ———— <---- ————
|————————————————————
> 推入后
————————————————————
| ———— ———— ————
| |元素1号 | |元素2号| |元素三号|
| ———— ———— ————
|————————————————————
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果你想删除vector数组末尾(最后一个) 的数据,可以使用pop_back()方法
> 删除前
————————————————————
| ———— ———— ———— ------->
| |元素1号 | |元素2号| |元素三号| ------->
| ———— ———— ———— ------->
|————————————————————
> 删除后
————————————————————
| ———— ————
| |元素1号 | |元素2号|
| ———— ————
|————————————————————
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
访问元素
可以使用下标操作符 [] 或 at() 方法访问 vector 中的元素:
> 但是你得确保数组里有数据,这个是VERY VERY重要的!!!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
清空VECTOR
如果你想清空整个vector,可以使用clear()方法
> 清除前
————————————————————
| ———— ———— ————
| |元素1号 | |元素2号| |元素三号|
| ———— ———— ————
|————————————————————
> 清除后
————————————————————
|
|(我是空的!!!!!!!!!!!!!!!!)
|
|————————————————————
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BEGIN与END
begin
* begin:代表开的地址
* 如果你要获取开头元素时,就要多一个*,当然啦也可以数组名[0]解决
end
* end以为结尾,end是vector的结尾元素的下一个位置的地址
* 所以,end - 1才是最后一个元素的地址
* 所以,* (v . end() - 1)表示输出v中的最后一个有效元素
> - 注意:在使用BEGIN和END时,一定要保证VECTOR非空!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VECTOR的长度:
可以使用 size() 方法获取 vector 中元素的数量:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VECTOR的排序
因为有一些人还不费sort排序,这里我就讲一下
sort排序的专用库是algorithm(记得导入)
然后就是语法sort(开始位置 , 结尾最后一个位置)
* 例如,我们想对数组中a[0]道a[8]这九个元素排序时(这是原生态数组)可以写
所以vector数组的排序就要用到begin和end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第四部分:刷题时光
FIRST:B2089 数组逆序重存放
* 题目大意:读入一个整数n,然后输入一个给我们排序好的n个数,让我们倒序输出
* 题目思路:可以使用vector数组先读入这些数,然后逆序输出
STEP01:定义VECTOR数组
STEP02:读入数据并逆序输出
最后就是CodeCodeCode环节了
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SECOND:B2093 查找特定的值
* 题目大意:读入n个数,查找x第一次出现的位置,如果这n个数里并不包含x的话,输出-1
* 题目思路:首先还是先读入这些数,然后使用pos变量来算位置,最后判断
STEP01
定义并读入
STEP02:随后查找X
STEP03:最后判断
CodeCodeCode环节来啦!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
THIRD:B2094 不与最大数相同的数字之和
* 题目大意:在n个数中,输出不是最大数相同的数字的和
* 方法:先读入,然后再查找最大数,最后除最大数以外的数算出和
STEP01:定义并读入
STEO02:找出最大值
STEP03:求和
STEP04:输出和
CodeCodeCode环节来啦
创作不易,给一个赞吧,求求了