vector向量容器
【vector的定义】
vector的头文件是:#include<vector>
(另外使用stl的容器时最好使用C++的输入输出,C++的头文件为:#include<iostream> using namespace std;)
【vector的功能】
能想数组一样对元素进行随机访问,具有自动管理的功能,对于元素的插入和删除,可动 态调整所占的内存空间,是一种简单、高效的容器,完全可以代替数组。
【vector的使用目的】
当无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。
【vetor的函数】
vector<int> v;
1. v.clear() 移除容器中所有数据。
2. v.empty() 判断容器是否为空。
3. v.erase(pos) 删除pos位置的数据
4. v.erase(beg,end) 删除[beg,end)区间的数据
5. v.front() 传回第一个数据。
6. v.insert(pos,elem) 在pos位置插入一个elem
7.v.pop_back() 删除最后一个数据。
8.v.push_back(elem) 在尾部加入一个数据。
9.v.size() 回容器中实际数据的个数。
10.v.begin() 返回指向容器第一个元素的迭代器
11.v.end() 返回指向容器最后一个元素的迭代器
【vector的遍历】
1.迭代器的定义:
vector<int>::iterator it;
2.遍历:
<span style="font-size:18px;">#include<iostream> // cin和cout的需要
#include<vector> // 向量的需要
using namespace std;
int main()
{
vector<int>v; // 定义向量v
int i,n;
for(i=0;i<10;i++)
{
cin>>n; // 输入n
v.push_back(n); // 尾部元素扩张方式赋值
}
// 使用iterator迭代器顺序遍历所有元素
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++)
{
// 输出迭代器当前位置上的元素值
cout<<*it<<" ";
}
cout<<endl;
return 0;
}</span>
3.基本操作插入与删除:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
// 定义vector容器,指定长度时会自动置0,且赋值要按下标赋值,push_back是在尾部增添值
vector<int>v,m;
int n,x,i;
for(i=0;i<10;i++)
{
cin>>n;
v.push_back(n); // 尾部元素扩张
}
cin>>x; // 输入要插入的元素
/* 多个插入语句时,下个插入语句是在上个插入语句执行完后再插入的,会影响下个插入的位置,所以注意插入位置 */
v.insert(v.begin(),x); // 要插入的位置
v.insert(v.begin()+1,x); // 插入的位置只能是相对于首部和尾部
v.insert(v.end(),x);
vector<int>::iterator it; // 生成迭代器
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" "; // 输出向量v的值
}
cout<<endl;
cout<<v.size()<<endl; // 输出向量v的大小
for(i=1;i<=10;i++)
v[i]=i; // 对向量v进行赋值,可将其重叠部分覆盖
for(it=v.begin();it!=v.end();it++)
cout<<*it<<" ";
cout<<endl;
v.erase(v.begin()+2); // 删除v[2]
for(it=v.begin();it!=v.end();it++)
cout<<*it<<" ";
cout<<endl;
v.erase(v.begin()+1,v.begin()+5); // 删除v[1]~v[5],可删除区间
for(it=v.begin();it!=v.end();it++)
cout<<*it<<" ";
cout<<endl;
v.clear(); // 清空向量v
cout<<v.size()<<endl;
return 0;
}
注意:vector迭代器持续有效,除非发生两种情况:(1)在一个较小索引位置上插入或移除元素;(2)由于容量变化而引起内存重新分配。
。