vector的用法
vector包括的函数为:
英文解析:http://www.cplusplus.com/reference/stl/
写了一段程序,测试一下几个常用的函数:
#include<iostream>
#include<vector>
#include<list>
#include<deque>
using namespace std;
int main()
{
//初始化
vector<int> a(3,7);
cout<<"输出元素";
///迭代器
for(vector<int>::iterator itr=a.begin();itr<a.end();++itr)
cout<<*itr;
cout<<endl;
//测试是否为空 empty()
if(!a.empty())
cout<<"此容器的大小为:"<<a.capacity()<<"含有元素为:"<<a.size();
else
cout<<"元素为空";
cout<<endl;
//清楚元素clear()
a.clear();
if(!a.empty())
cout<<"容器里的元素被clear()清理完毕"<<endl;
//调整容器的大小 resize
a.resize(5);
cout<<"此容器的大小重新调整为:"<<a.capacity()<<endl;
cout<<"默认的5个元素大小为:";
for(vector<int>::iterator it=a.begin();it<a.end();++it)
cout<<*it;
a.push_back(3);
a.push_back(4);
//返回第一个元素
cout<<"返回第一个元素"<<a.front()<<",此时容器的capacity为:"<<a.capacity()<<"可见push_back 只是在末尾增加元素";
cout<<endl<<"通过at获取元素"<<a.at(5)<<endl;
//pop返回
a.pop_back();
cout<<"pop_back后,容器的大小为:"<<a.capacity()<<"元素的个数为:"<<a.size()<<endl<<"输出元素";
for(vector<int>::iterator it=a.begin();it<a.end();++it)
cout<<*it;
cout<<endl<<"由此可见,pop_back只弹出元素,不返回"<<endl;
a.assign(4,5);//不会改变capacity,会改变size
cout<<"capacity:"<<a.capacity()<<endl;;
a[0]=2;
cout<<"显示第0个和第3个位置的元素,验证[]和assign的赋值功能:"<<a[0]<<","<<a[3];
cout<<"front()返回最后一个元素"<<a.back();
vector<int>::iterator it=a.begin();
a.erase(it);
cout<<"erase后的元素为:";
for(vector<int>::iterator it=a.begin();it<a.end();++it)
cout<<*it;
a.swap(vector<int>());
return 0;
}
测试结果
:
list的用法
与vector相比,list没有capacity,原因是因为:list不需要对内存重新全部分配,list用链表的,每增加一个元素都要新开辟一个元素,然后插入到list中,记住list是双链表。list多了一个pash_front和pop_front。
分析的英文连接:http://www.cplusplus.com/reference/list/list/merge/
#include<list>
#include<iostream>
using namespace std;
int main()
{
//定义LISTINT
typedef list<int> LISTINT;
typedef list<char> LISTCHAR;
LISTINT list_int(3);
list_int.assign(4,5);
list_int.push_back(6);
list_int.push_front(10);
list_int.push_front(1);
list_int.pop_front();
list_int.pop_back();
list_int.push_back(6);
for(LISTINT::iterator itr=list_int.begin();itr!=list_int.end();++itr)
cout<<*itr<<",";
cout<<endl;
for(LISTINT::reverse_iterator itr=list_int.rbegin();itr!=list_int.rend();++itr)
cout<<*itr<<",";
cout<<endl;
list_int.erase(--list_int.end());
list_int.sort();
for(LISTINT::iterator itr=list_int.begin();itr!=list_int.end();++itr)
cout<<*itr<<",";
return 0;
}