数据结构-练习 18 vector && list

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;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值