Vector_初探

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;
}

 

点赞