vector
一种长度可以根据需要自动改变的容器。
1.定义
加入头文件#include<vector>,定义时vector<数据类型>队列名,如果数据类型是vector,则需要这样定义:vector<vector<数据类型> >队列名,注意>>之间要加空格。
2.访问
(1)访问方式类似数组,通过下标访问。vector<int>a可以使用a[下标]访问,0=<下标<=a.size()。
(2)通过迭代器访问。迭代器是一种类似于指针的东西,需要先定义。通过vector<数据类型>::iterator 迭代器名 来定义。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
for(int i=0; i<3; i++)
a.push_back(i);
vector<int>::iterator it=a.begin();
for(; it!=a.end(); it++)
cout<<*it;
}
输出:012
3.常用函数
(1)push_back()
push_back(x)就是在队列的末尾添加一个x,时间复杂度O(1)。
(2)pop_back()
pop_back()就是在队列末尾删除一个元素,时间复杂度O(1)。
(3)size()
用来获取vector容器中的元素个数,时间复杂度O(1)。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
for(int i=0; i<3; i++)
a.push_back(i);
cout<<a.size();
}
输出:3
(4)clear()
用来清除vector容器中的所有元素,时间复杂度O(N),N为容器内元素个数。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
for(int i=0; i<3; i++)
a.push_back(i);
a.clear();
cout<<a.size();
}
输出:0
(5)insert()
使用insert(it,x)向迭代器it处插入元素x,时间复杂度O(N)。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
for(int i=0; i<3; i++)
a.push_back(i);
vector<int>::iterator it=a.begin();
a.insert(it+1,4);
for(; it!=a.end(); it++)
cout<<*it;
}
输出:0421
(6)erase()
第一种用法,用erase(it)来删除迭代器it处的元素,时间复杂度O(N)。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
for(int i=0; i<3; i++)
a.push_back(i);
vector<int>::iterator it=a.begin();
a.erase(it+2);
for(; it!=a.end(); it++)
cout<<*it;
}
输出:01
第二种用法,用erase(x,y)删除区间[x,y)之间的所有元素,时间复杂度O(N)。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
for(int i=0; i<3; i++)
a.push_back(i);
vector<int>::iterator it=a.begin();
a.erase(it+1,a.end());
for(; it!=a.end(); it++)
cout<<*it;
}
输出:0
(7)resize()
a.resize(n,v)可以改变数组大小为n,n个空间数值赋为v,如果没有默认赋值为0。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
a.resize(3,6);
vector<int>::iterator it=a.begin();
for(; it!=a.end(); it++)
cout<<*it;
}
输出:666
(8)front()
a.front()可以返回第一个元素。