vector是STL模板库中的序列式容器,利用它可以有效地避免空间的浪费。
创建vector容器
vector< int >v;vector< char >;vector< int >v[10]。
vector常用函数及功能
c.clear() 清空容器中所有元素
c.empty() 判断容器是否为空
c.pop_back() 删除容器最后一个元素
c.push_back() 在尾部加入一个元素
c.resize() 重新指定容器的长度
c.reserve() 保留适当的容量
c1.swap(c2) 交换c1和c2的值
swap(c1,c2) 同上
使用vector容器注意
vector<int>v,v相当于一个一维数组,长度不定,需注意如果当前数组v的长度为n,不可像普通数组一样写成v[n]=x,这样做是毫无意义的,但是如果在n以内,可以直接写做v[m]=x (m < n)。
在这里我要特别说一下resize()函数,先看下面的代码和输出
// resizing vector
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
vector<int> myvector;
// set some initial content:
for (int i=1;i<10;i++) myvector.push_back(i);
myvector.resize(5);
myvector.resize(8,100);
myvector.resize(12);
cout << "myvector contains:";
for (int i=0;i<myvector.size();i++)
cout << ' ' << myvector[i];
cout << '\n';
return 0;
}
Output:
myvector contains: 1 2 3 4 5 100 100 100 0 0 0 0
从这里可以很明显的看出,如果利用resize()函数减少容器的长度,很简单直接把想要保留的长度作为参数传给它,如果增加长度x,执行c.resize(n+x,a),那么新增加部分的数组的值为a,但是如果不传第二个参数给它,就会默认为0。
其他函数我就在代码中为大家展示它的功能。测试代码如下
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>p;
for(int i=0;i<10;i++)
p.push_back(i);
swap(p[2],p[1]);
for(int i=0;i<p.size();i++)
cout<<p[i]<<" ";
cout<<endl;
p.resize(7);
for(int i=0;i<p.size();i++)
cout<<p[i]<<" ";
cout<<endl;
while(!p.empty())
{
p.pop_back();
}
p.clear();
cout<<p.size()<<endl;
return 0;
}
如有不当之处欢迎指出!!