vector是一种简单高效的容器,在尾端插入和删除元素,算法时间度为O(1),其他元素插入和删除为O(n)。vector可动态调整所占用的空间内存。
用数组方式访问vector元素的参考代码如下所示:
#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(20); //尾端插入新元素
v.push_back(26);
v.push_back(12);
for(int i=0; i<v.size(); i++)
cout<<v[i]<<' ';
getchar();
return 0;
}
用迭代器访问vector的参考代码如下所示:
#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
int j;
vector<int>v;
v.push_back(0); //尾端插入元素
v.push_back(1);
//v.clear(); //全部清空元素
v.push_back(2);
v.insert(v.begin()+2,9); //插入9在第二个后面
v.insert(v.begin(),5); //插入5为首元素
v.insert(v.end(),12); //插入12为末元素
v.erase(v.begin()+1); //删除第二个元素
v.erase(v.begin(),v.begin()+2); //删除前三个元素
vector<int>::iterator i; //迭代器,相当于游标
for(i=v.begin(),j=0; i!=v.end(); i++,j++) //迭代器遍历
cout<<"v["<<j<<"]="<<*i<<endl;
swap(v[1],v[2]); //交换
for(i=v.begin(),j=0; i!=v.end(); i++,j++)
cout<<"v["<<j<<"]="<<*i<<endl;
cout<<v.empty()<<endl; //判断是否为空
cout<<v.size()<<endl; //元素实际个数
cout<<v.max_size()<<endl; //可容纳最大元素个数
cout<<v.capacity()<<endl; //当前可容纳的vector元素个数
cout<<v.front()<<endl; //首元素引用
cout<<v.back()<<endl; //末元素引用
v.pop_back(); //删除末尾的一个元素
v.reserve(30); //调整空间数组大小
cout<<v.capacity()<<endl;
vector<int>::reverse_iterator ri; //反向迭代器
for(ri=v.rbegin(); ri!=v.rend(); ri++) //首尾反向
cout<<*ri<<" ";
getchar();
return 0;
}
结构体容器参考代码如下:
#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std;
struct stu
{
int x;
int y;
};
int main()
{
int j;
vector<stu>v1; //结构体容器
vector<stu>v2;
struct stu a = {1,2};
struct stu b= {2,3};
struct stu c= {4,5};
v1.push_back(a);
v1.push_back(b);
v1.push_back(c);
v2.push_back(c);
v2.push_back(b);
v2.push_back(a);
cout<<"v1:\n";
for(int i=0; i<v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl;
cout<<"v2:\n";
for(int i=0; i<v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl;
swap(v1,v2); //两结构体元素交换
cout<<"v1:\n";
for(int i=0; i<v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl;
cout<<"v2:\n";
for(int i=0; i<v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl;
getchar();
return 0;
}