文章目录
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);