C++为我们提供了一系列标准模板库,可以在代码中提供很多方便
下面介绍一些简单的vector的使用方法,vector一般可以用来代替数组,也具备循秩访问的特性,同时也可以用迭代器访问
vector自带了很多有用的函数,可以通过函数来实现vector的增删改查
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
//push_back()函数用来向vector尾部添加元素,时间复杂度为O(1)
cout<<"push.back()1~5: ";
for(int i=1;i<=5;i++)
vi.push_back(i);
//不允许i<vi.begin()这种写法
//size()用来获取vector中元素的个数,O(1),返回的是unsigned类型
for(int i=0;i<vi.size();i++)
printf("%d ",vi[i]);
//采用迭代器的访问方式,类似于指针
cout<<"\nvisit by iterator: ";
vector<int>::iterator it=vi.begin();
for(int i=0;i<5;i++)
printf("%d ",*(it+i));
//pop.back()用来删除一个尾部元素,O(1)
vi.pop_back();
printf("\nafter pop.back once : ");
for(int i=0;i<vi.size();i++)
printf("%d ",vi[i]);
cout<<endl<<"vi_size: "<<vi.size();
//clear()用来清空vector中的所有元素,O(N),有点怀疑是反复调用pop.back()
vi.clear();
cout<<endl<<"after clear vector the vi_size "<<vi.size();
//insert(it,x)用来向vector的任意迭代器it处插入一个元素x,时间复杂度O(N)
for(int i=1;i<=5;i++)
vi.push_back(i);
vi.insert(vi.begin()+2,-1);
cout<<"\nremix vector and insert -1 to vector : ";
for(int i=0;i<vi.size();i++)
printf("%d ",vi[i]);
//erase()有两种用法:删除单个元素,删除指定区间内所有元素,均为O(N)
vi.erase(vi.begin()+2);//删除vi[2],即-1
cout<<"\nafter vi.erase(vi.begin()+2) vector:";
for(int i=0;i<vi.size();i++)
printf("%d ",vi[i]);
vi.erase(vi.begin()+1,vi.begin()+4);//座闭右开,[1,4)
cout<<"\nafter vi.erase(vi.begin()+1,vi.begin()+4) vector:";
for(int i=0;i<vi.size();i++)
printf("%d ",vi[i]);
return 0;
}