STL系列之二_vector(常见函数代码演示)

vector常用函数与代码演示:


vector类常用的函数如下所示:

    1.构造函数

  • vector(int nSize):创建一个vector,元素个数为nSize
  • vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t
  • vector(const vector&):复制构造函数
  • vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中

    2.增加函数

  • void push_back(const T& x):向量尾部增加一个元素X
  • iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x
  • iterator insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x
  • iterator insert(iterator it,const_iterator first,const_iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据

   3.删除函数

  • iterator erase(iterator it):删除向量中迭代器指向元素
  • iterator erase(iterator first,iterator last):删除向量中[first,last)中元素
  • void pop_back():删除向量中最后一个元素
  • void clear():清空向量中所有元素

  4.遍历函数

  • reference at(int pos):返回pos位置元素的引用
  • reference front():返回首元素的引用
  • reference back():返回尾元素的引用
  • iterator begin():返回向量头指针,指向第一个元素
  • iterator end():返回向量尾指针,指向向量最后一个元素的下一个位置
  • reverse_iterator rbegin():反向迭代器,指向最后一个元素
  • reverse_iterator rend():反向迭代器,指向第一个元素之前的位置

  5.判断函数

  • bool empty() const:判断向量是否为空,若为空,则向量中无元素

  6.大小函数

  • int size() const:返回当前元素的个数
  • int capacity() const:如果不重新分配内存,当前已经分配的可以容纳的元素的个数。
  • int max_size() const:返回最大可能的元素个数

  7.其他函数

  • void swap(vector&):交换两个同类型向量的数据
  • void assign(int n,const T& x):设置该向量元素个数为n,且值均为x;原来的值清空。
  • void assign(const_iterator first,const_iterator last):将另一个向量中[first,last)中元素设置成当前向量元素,原来的值清空。
vector常用函数的代码演示:
// vector.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <IOSTREAM>
#include <VECTOR>
using namespace std;

int main(int argc, char* argv[])
{
	//vector四种的初始化
	vector <int> vecIntA(3);  //三个元素
	vector <int> vecIntB(3,9); //三个不同元素
	vector <int> vecIntC(vecIntB); //拷贝
	vector <int> vecIntD(vecIntB.begin(),vecIntB.end()); //指定范围拷贝
	
	for (vector<int>::iterator iA=vecIntA.begin();iA != vecIntA.end();iA++)
	{
		cout << *iA <<"   ";		
	}
	cout << endl;
	for (vector<int>::iterator iB=vecIntB.begin();iB != vecIntB.end();iB++)
	{
		cout << *iB <<"   ";		
	}
	cout << endl;
	for (vector<int>::iterator iC=vecIntC.begin();iC != vecIntC.end();iC++)
	{
		cout << *iC <<"   ";		
	}
	cout << endl;
	for (vector<int>::iterator iD=vecIntD.begin();iD != vecIntD.end();iD++)
	{
		cout << *iD <<"   ";		
	}
	cout << endl;

	//vector四种插入元素
	vector <int> vecIntE(vecIntA);
	vecIntE.insert(vecIntE.begin(),1);  //首元素前插入元素1
	vecIntE.insert(vecIntE.begin(),3,9);  //首元素前插入三个相同的元素,是9
	vecIntE.push_back(2);//末尾增加2
	vecIntE.insert(vecIntE.begin()+7,vecIntB.begin(),vecIntB.end());
	for (vector<int>::iterator iE=vecIntE.begin();iE != vecIntE.end();iE++)
	{
		cout << *iE <<"   ";		
	}
	cout << endl;

	//vector四种删除操作
	vecIntE.erase(vecIntE.begin());  //删除第一个元素
	vecIntE.erase(vecIntE.begin(),vecIntE.begin()+2);//再删除前面的两个元素
	vecIntE.pop_back();  //删除最后面的元素
	vecIntE.clear(); //清除所有元素
	for (vector<int>::iterator iE2=vecIntE.begin();iE2 != vecIntE.end();iE2++)
	{
		cout << *iE2 <<"   ";		
	}
	cout << endl;

	//vector的遍历
	vector<int> vecIntF(vecIntB);
	vecIntF.at(1) += 2;  //第二个元素加2
	vecIntF.front() ++; //第一个元素加1
	vecIntF.back() += 3; //第三个元素加3
	for (vector<int>::reverse_iterator iF=vecIntF.rbegin();iF != vecIntF.rend();iF++)
	{
		cout << *iF <<"   ";		
	}
	cout << endl;

	//判断是否为空
	if(vecIntF.empty())
		cout <<"Empty"<<endl;
	else cout << "Not Empty" << endl;
	
	//大小函数
	int size = vecIntF.size();
	int capacity = vecIntF.capacity();	   
	int max_size = vecIntF.max_size();
	cout << "size" <<" " <<size << endl;   
	cout << "capacity" <<" "<< capacity << endl;
	cout << "max_size" <<" "<< max_size << endl;
	
	//swap交换数据
	vecIntF.swap(vecIntE);	
	//这个时候vector中的数据为空
	for (vector<int>::iterator iF2=vecIntF.begin();iF2 != vecIntF.end();iF2++)
	{
		cout << *iF2 <<"   ";		
	}
	cout << endl;
	
	//值为10.11.12
	for (vector<int>::iterator iE3=vecIntE.begin();iE3 != vecIntE.end();iE3++)
	{
		cout << *iE3 <<"   ";		
	}
	cout << endl;
	
	//assign进行赋值
	vecIntE.assign(3,8);  //赋3个值且值为8
	for (vector<int>::iterator iE4=vecIntE.begin();iE4 != vecIntE.end();iE4++)
	{
		cout << *iE4 <<"   ";		
	}
	cout << endl;

	//将vectorB中的元素赋值过来
	vecIntE.assign(vecIntB.begin(),vecIntB.end());
	for (vector<int>::iterator iE5=vecIntE.begin();iE5 != vecIntE.end();iE5++)
	{
		cout << *iE5 <<"   ";		
	}
	cout << endl;

	return 0; 
}

下面是程序运行界面:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值