初识STL之vector容器

1.vector()基本概念

功能:

vector数据结构跟数组非常相似,也称为单端数组.

vector与普通数组的区别:

不同之处在于数组是静态空间,而vector可以动态扩展

2.vector构造函数

创建vector容器

函数原型:

vector<T> v;
vector(v.begin(),v.end());
vector(n,elem);
vector(const vector &vec);
#include<vector>
#include<iostream>
using namespace std;

void PrintVector(vector<int> &v)
{
	//打印写法一: 
//	for(auto v1:v)
//		cout<<v1<<" ";

	//写法二:	
//	for(int i=0 ;i<v.size();i++)
//        cout<<v[i]<<" ";
	//写法三:
	for(vector<int>::const_iterator it=v.begin();it!=v.end();it++)
		cout<<*it<<" "; 
	cout<<endl;

	
}

void text()
{
	vector<int> v1;
	
	for(int i=1;i<10;i++)
		v1.push_back(i);
	PrintVector(v1);
	
	vector<int> v2(v1.begin(),v1.end());
	PrintVector(v2);
	
	vector<int> v3(4,100);
	PrintVector(v3);
	
	vector<int> v4(v3);
	PrintVector(v4);
}

int main()
{
	text();
}
 
 

3.vector赋值操作

给vector容器赋值

函数原型:

vector& operator=(const vector& vec);
assign(beg,end);  //将[beg,end]区间内的数据拷贝赋值给本身
assign(n,elem); //将n个elem拷贝赋值给本身 
#include<vector>
#include<iostream>
using namespace std;

void PrintVector(vector<int> &v)
{
	//打印写法一: 
	for(auto v1:v)
		cout<<v1<<" ";
	cout<<endl;
	
}

void text()
{
	vector<int> v1;
	
	for(int i=1;i<10;i++)
		v1.push_back(i);
	PrintVector(v1);
	
	vector<int> v2;
	v2 = v1;
	PrintVector(v2);
	
	vector<int> v3;
	//2 3 4 5 6 7 8
	v3.assign(v1.begin()+1,v1.end()-1);
	PrintVector(v3);
	
	vector<int> v4;
	v4.assign(5,100);
	PrintVector(v4);
	
	
}

int main()
{
	text();
}
 

5.vector容量和大小

对vector容器的容量和大小进行操作

函数原型:

empty(); //判断容器是否为空
capacity(); //容量
size(): //个数
resize(int num); //重新指定容器长度为num若容器变长,则默认填充0,若容器变短,则末尾超出长度的元素被删除

resize(int num,elem)//重新指定容器长度为num若容器变长,则填充elem,若容器变短,则末尾超出长度的元素被删除
#include<vector>
#include<iostream>
using namespace std;

void PrintVector(vector<int> &v)
{
	//打印写法一: 
	for(auto v1:v)
		cout<<v1<<" ";
	cout<<endl;
	
}

void text()
{
	vector<int> v1;
	
	for(int i=1;i<10;i++)
		v1.push_back(i);
	
	vector<int> v2;
	if(!v1.empty()) cout<<"v1不为空"<<endl;
	if(v2.empty()) cout<<"v2为空"<<endl; 
	
	int cap = v1.capacity();
	//16
	cout<<cap<<endl;
	
	int Size = v1.size();
	//9
	cout<<Size<<endl;
	
	v1.resize(15);
	PrintVector(v1);
	//1 2 3 4 5 6 7 8 9 0 0 0 0 0 0
	
	v1.resize(5);
	PrintVector(v1);
	//1 2 3 4 5
	
	v1.resize(15,10);
	PrintVector(v1);
	//1 2 3 4 5 10 10 10 10 10 10 10 10 10 10
	
	
}

int main()
{
	text();
}

6.vector插入和删除

函数原型:

push_back(ele);
pop_back();
//迭代器指向位置pos插入元素ele
insert(const_iterator pos,ele);
//迭代器指向位置pos插入count个元素ele;
insert(const_iterator pos,int count,ele);
//删除迭代器指向的元素
erase(const_iterator pos);
//删除迭代器从strat到end之间的元素
erase(const_iterator start,const_iterator end);
clear();
#include<vector>
#include<iostream>
using namespace std;

void PrintVector(vector<int> &v)
{
	//打印写法一: 
	for(auto v1:v)
		cout<<v1<<" ";
	cout<<endl;
	
}

void text()
{
	vector<int> v1;
	
	for(int i=1;i<10;i++)
		v1.push_back(i);
	
	v1.insert(v1.begin(),10);
	PrintVector(v1);
	//10 1 2 3 4 5 6 7 8 9
	
	v1.insert(v1.begin(),4,44);
	PrintVector(v1);
	//44 44 44 44 10 1 2 3 4 5 6 7 8 9
	
	v1.erase(v1.begin());
	PrintVector(v1);
	//44 44 44 10 1 2 3 4 5 6 7 8 9
	
	v1.erase(v1.begin(),v1.end());
	//等同与 v1.clear(); 
}

int main()
{
	text();
}
 

7.vector数据存储

函数原型:

at(int idx);
operator[];
front();
back();
#include<vector>
#include<iostream>
using namespace std;

void PrintVector(vector<int> &v)
{
	//打印写法一: 
	for(auto v1:v)
		cout<<v1<<" ";
	cout<<endl;
	
}

void text()
{
	vector<int> v1;
	
	for(int i=1;i<10;i++)
		v1.push_back(i);
	
	for(int i=0;i<v1.size();i++)
		cout<<v1[i]<<" ";
	cout<<endl;
	
	for(int i=0;i<v1.size();i++)
		cout<<v1.at(i)<<" ";
	cout<<endl;
	
	cout<<v1.front()<<endl;
	
	cout<<v1.back()<<endl;
}

int main()
{
	text();
}
 

8.vector互换容器

函数原型:

swap(vec);
#include<vector>
#include<iostream>
using namespace std;

void PrintVector(vector<int> &v)
{
	//打印写法一: 
	for(auto v1:v)
		cout<<v1<<" ";
	cout<<endl;
	
}

void text()
{
	vector<int> v1;	
	for(int i=1;i<10;i++)
		v1.push_back(i);
		
	vector<int> v2;
	for(int i=9;i>0;i--)
		v2.push_back(i);
	cout<<"交换前:"<<endl;
	 PrintVector(v1);
	 PrintVector(v2);
	 
	v1.swap(v2);
	cout<<"交换后:"<<endl;
	 PrintVector(v1);
	 PrintVector(v2);
	/*
	交换前:
	1 2 3 4 5 6 7 8 9
	9 8 7 6 5 4 3 2 1
	交换后:
	9 8 7 6 5 4 3 2 1
	1 2 3 4 5 6 7 8 9
*/
	
	
}

int main()
{
	text();
}
 

9.vector排序

	v.push_back(4);
	v.push_back(40);
	v.push_back(5);
	v.push_back(12);
	v.push_back(7);
	sort(v.begin(), v.end());
	PrintVector(v);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值