在刷题时,我们难免会遇到用普通数组难以解决题目的时候,例如:空间浪费太大(尤其是储存图时)、插入单个或多个元素时、删除单个或多个元素时……这时,我们可以使用动态数组vector,来帮忙缩短代码,提升运行效率。那本期,我们就由基础开始讲。
一、定义
在使用vector前,我们应先导入头文件,即:
导入后,即可定义。格式为vector<DataType> 数组名(长度);,例如:
长度也可不写,即数组为空 ,当然,当心喜提RE。例如:
同时,这里还有一个小技巧。如果定义时想让数组全部赋值为同一元素,告别for和memset()!直接在长度后面跟上要赋值的元素即可!例如:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、访问
其实与普通数组相同,格式为数组名[下标],例如:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、插入
1.尾部插入
可使用vector内置的 push_back() 函数,格式为v.push_back(a),如:
2.中间插入
可使用vector内置的 insert() 函数,格式为v.insert(v.begin()+idx,a),如:
如果想插入多个:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四、删除
1.尾部删除
可使用vector内置的 pop_back() 函数,格式为v.pop_back(),如:
2.中间删除
可使用vector内置的 erase() 函数,格式为v.erase(v.begin()+idx),如:
如果需要区间删除(取头不取尾):
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
五、排序
sort()基本应该都会,那不多说了
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
六、查找
可使用算法库中的 find() 函数,需先导入 algorithm,即:
find() 函数格式为find(v.begin(),v.end(),a),返回值为一个迭代器。如果没有在 vvv 中查找到 aaa 元素,它会返回v.end(),由此可编译以下局部代码:
可如果我们想知道这个元素的下标呢?我们可以使用 distance() 函数:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
七、其他美妙的小函数
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎大家在下面为本贴留言补充!作者发帖没啥经验,还请关照\color{yellow}{作者发帖没啥经验,还请关照}作者发帖没啥经验,还请关照