list双向链表的constructor、push_back、insert
先帖代码
/******************************************************************
** 文件名:ListContent
**
** 创建人:孤舟雪未央
** 日 期:2016-12-3
** 修改人:孤舟雪未央
** 日 期:2016-12-3
** 描 述:list的构造与内存管理
** 版 本:1.0
******************************************************************/
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> my_list;
//输出list的大小
cout<< "size = "<< my_list.size() << endl;
//往list中添加数据
my_list.push_back(2);
my_list.push_back(3);
my_list.push_back(4);
my_list.push_back(5);
my_list.push_back(6);
//再次查看list的大小
cout<< "size = "<< my_list.size()<< endl;
//输出list的元素
list<int>::iterator iter;
for(iter = my_list.begin();iter != my_list.end(); ++iter)
cout<< *iter << " ";
cout<< endl;
//查找list中的3元素
iter = find(my_list.begin(), my_list.end(), 3);
if(iter != my_list.end())
my_list.insert(iter, 99);
cout<< "size = "<< my_list.size()<< endl;
cout<< *iter<< endl;
//输出所有元素
for(iter = my_list.begin(); iter != my_list.end(); ++iter)
cout<< *iter << " ";
cout<< endl;
//查找5元素
iter = find(my_list.begin(), my_list.end(), 5);
if(iter != my_list.end())
cout<< *(my_list.erase(iter))<< endl;
//输出所有元素
for(iter = my_list.begin(); iter != my_list.end(); ++iter)
cout<< *iter << " ";
cout<< endl;
return 0;
}
list<int> my_list;
此处list使用缺省的alloc作为空间配置器,为每一个节点配置空间。
my_list.push_back(2);
push_back(2)将int型的2插入到双向链表的末尾,内部调用insert函数——
iterator
insert(iterator position,const T&x)。
iter = find(my_list.begin(), my_list.end(), 3);
find函数在上一篇博客有详细的讲解,insert函数插入的元素是插入到元素之前的,
例如:
my_list.insert(iter, 99);
是将99插入到iter当前所指位置之前的,而不是在其之后。