#vector的用法,小白篇
##前言
在下最近在visual stdio code上配置好了c++,面对vs code漂亮的界面,我果断舍弃了惨白惨白的code block,转向微软的怀抱。
开始自学c++的模板,也没什么人可以指教,只是单纯的自己的理解发表出来供诸位同泽参考,如有谬误,见笑了。
##正文
Vector 是C++标准程式库中的一个类,可视为会自动扩展容量的阵列,以循序(Sequential)的方式维护变数集合。vector的特色有支持随机存取,在集合尾端增删元素很快,但是在集合中间增删元素比较费时。vector是C++标准程式库中的众多容器(container)之一。 vector以模板(泛型)方式实现,可以保存任意类型的变数,包括使用者自定义的资料型态,例如:它可以是放置整数(int)型态的 vector、也可以是放置字串(string)型态的 vector、或者放置使用者自定类别(user-defined class)的 vector。
以上内容引自wiki,看的认识一头雾水,说的都是一些什么鬼??
试着理解一下,意思大概就是vector容器是一个不定长数组??不定长数组的意思是,这个数组想要多长就要多长吗?本着时间出真知的真理,博主开始了一点也一点的实践。
首先是定义vector数组,如下:
#include<vector>
using namespace std;
int main(){
vector<int> v;
}
这样我们就有了一个数组v,那么这个数组和我们正常定义的数组有什么区别呢?
int main(){
int a[100];//正常定义
}
实验如下,
1.给变量赋值
//图片能不能上传什么鬼。
#include<vector>
#include<iostream>
using namespace std;
int main()
{
vector<int> v;
v[0]=1;1
cout<<v[0];
getchar();
}
结果:失败。
说明:如果想要像vector中压入元素,不能使用和普通数组一样的方法(废话),要用一个叫做push_back的东西,意思很明显,就是想vecror容器的尾部压入一个元素。
#include<vector>
#include<iostream>
using namespace std;
int main()
{
vector<int> v;
vector<int>::iterator it;
int n,a;
cin>>n;
for(int i=0;i<n;i++){
cin>>a;
v.push_back(a);
}
cout<<v[2];
}
2.开始和结束
总得来说,vector的第一个元素你可以用v[0]来表示,但是因为数组不定长,数组的最后一个元素不太好搞,vector用一种特定的方式来表示,即,v.end(),相应的第一元素则可以表示成,v.begin()。
3.获取是数组长度
熟悉的的size
int Size=v.size();
4.判断数组是否为空
精分的empty
int a=v.empty();
如果数组元素不为空则返回0,如果为空则返回1;
5.插入元素
用insert()
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n;
int s;
vector<int> vec;
//迭代器定义
vector<int>::iterator it;
while(cin>>n){
//像数组中压入元素
for(int i=0;i<n;i++){
cin>>s;
//尾部元素扩张
vec.push_back(s);
}
//像容器第二个位置插入4
vec.insert(vec.begin()+1,4);
}
说明:vec.begin()+1,是指第二个元素,vec.insert(vec.begin()+1,4);的意思是,向vec容器的第二个元素插进一个“4”,原来的元素依次向后退一个,vec.size()+1,这点比普通数组方便多了。