Fork me on GitHub

C++STL——Vector

Vector

向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
以int类型为例,创建数组:vector a;

包含函数(常用)

  1. push_back():将元素插入到容器的尾部
  2. pop_back():将最后一个元素移除
  3. front():返回容器中的第一个元素
  4. back():返回容器中最后一个元素
  5. begin(),end()
  6. size():返回容器的大小
  7. sort(a.begin(),a.end()):默认是由小到大将容器中的元素排序.若想要由大到小需要重写函数。需要头文件algorithm
  8. reverse(a.begin(),a.end()):容器中元素由大到小排序
  9. clear():清空容器
  10. empty():判断Vector是否为空(返回true时为空)
  11. erase():删除指定元素,需要用到迭代器
  12. swap(): 交换元素

删除某个元素

注意它是需要使用迭代器删除的

vector<int>::iterator itor;
for(itor=a.begin();itor!=a.end();)
{
    if(*itor == 13)//使用迭代器逐个对比,一样的就删掉,然后++判断下一个
    {
        itor=a.erase(itor);
    }
    else
    {
        itor++;
    }
}

交换元素

vector<int> vet;
vet.push_back(12);
vet.push_back(13);
swap(vet[0],vet[1]);

访问方式

其访问可以使用获得数组的大小,然后以数组的方式a[i]来访问;也可以使用迭代器来访问

vector<int>::iterator iter;
for(iter = a.begin();iter!=a.end();iter++)
  cout<<*iter<<" ";

二维数组的建立

在代码中给出

代码

#include <iostream>
#include <string>
#include <vector> 
#include <algorithm>

using namespace std;
void create_er();
void test(vector<int> a);
int main()
{
	vector<int> a;
	
	//插入只能用push_back()的方式 
	a.push_back(12);//插入函数,将数值插入到数组的最后一个
	a.push_back(13);
	a.push_back(14);//它的存储方式是12 13 14.先进先出 
	
	test(a);
	
	cout<<"数组的第一个成员:"<<a.front()<<endl;//注意这里的front函数 
	cout<<"数组的大小:"<<a.size()<<endl; 
	
//	a.pop_back();//移除最后一个元素 
	
	//vector的输出方式和数组一样
	
	//可以使用sort来排列容器中的元素,但是需要引入algorithm 
	 
	cout<<"使用sort使vector中元素由小到大排序"<<endl;
	sort(a.begin(),a.end());//由小到大 
	for(int i = 0;i<a.size();i++)
	{
		cout<<a[i]<<"  ";
	} 
	cout<<endl;
//	
	cout<<"使用sort使reverse中元素由大到小排序"<<endl;
	reverse(a.begin(),a.end()); //由大到小 
	for(int i = 0;i<a.size();i++)
	{
		cout<<a[i]<<"  ";
	} 
	cout<<endl;
	
	//容器中元素的访问输出除了可以使用如上述的数组访问的方式,
	//还可以利用迭代器来进行数据的输出
//	
	//使用迭代器输出
	vector<int>::iterator iter;
	for(iter = a.begin();iter!=a.end();iter++)
	{
		cout<<*iter<<" ";
	} 
	 
//	a.clear();//清除容器中所有的元素

	//判断此时的vector容器是否为空 
	if(a.empty())//empty()函数,如果容器为空,则返回true 
		cout<<"empty"<<endl; 
//	create_er();
	return 0;	
}
void create_er()
{
	//二维数组的建立
	int N = 5,M = 6;
	
	//方式一 
	vector<vector<int> > obj(N);//二维数组的定义式
	for(int i = 0;i<obj.size();i++)
	{
		obj[i].resize(M);//定义为N行M列的二维数组 
	}
	
	//方式二
//	vector<vector<int> >obj(N,vector<int>(M)); 
	
	//二维数组的输出
	for(int i = 0;i<obj.size();i++)
	{
		for(int j = 0;j<obj[i].size();j++)
		{
			cout<<obj[i][j];
		}
		cout<<endl; 
	}	
}

void test(vector<int> a){
	cout<<"vector传入了函数"<<endl;
	cout<<"fun里的"<<a[1];
}
posted @ 2021-12-01 16:51  kki_m  阅读(65)  评论(0)    收藏  举报