#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
void Print(int &item)
{
cout<<item<<" ";
}
int main()
{
list<int> listintegers;
list<int>::iterator listiter; //引入迭代器
//------------头插法插入元素-------------
listintegers.push_front(5);
listintegers.push_front(3);
listintegers.push_front(1);
listintegers.push_front(2);
listintegers.push_front(4);
//----------尾插法插入元素----------
listintegers.push_back(6);
listintegers.push_back(8);
listintegers.push_back(7);
//--------使用list的成员函数insert()插入元素到链表中
listintegers.insert(listintegers.end(),10);
listintegers.insert(listintegers.end(),9);
//----------利用迭代器输出链表-----------
/* 我们在每一个算法中都使用一个或多个iterator。
我们使用它们来存取容器中的对象。
要存取一个给定的对象,我们把一个iterator指向它,然后间接引用这个iterator */
cout<<"链表为:";
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
//-------利用STL通用算法for_each()输出链表---------------
/* Print是个函数,实现对象的输出功能 */
cout<<"链表为:";
std::for_each(listintegers.begin(),listintegers.end(),Print);
cout<<endl;
//------利用STL通用算法find()推断链表中是否存在某元素----------
listiter=find(listintegers.begin(),listintegers.end(),6);
if(listiter==listintegers.end())
{
cout<<"6 is not in list"<<endl;
}
else
{
cout<<"6 is in list"<<endl;
}
//-------利用STL通用算法search()推断链表中是否存在某个序列-------
list<int> targetlist;
targetlist.push_front(2);
targetlist.push_front(1); //定义该序列为12
listiter=search(listintegers.begin(),listintegers.end(),targetlist.begin(),targetlist.end());
if(listiter==listintegers.end())
{
cout<<"序列12 is not in list"<<endl;
}
else
{
cout<<"序列12 is in list"<<endl;
}
//使用list的成员函数sort()对链表进行排序
cout<<"排序后,链表为:";
listintegers.sort();
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
//使用list的成员函数remove()删除链表元素
listintegers.remove(8);
cout<<"删除8后,链表为:";
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
//----------使用list成员函数pop_front删除链首元素----------
listintegers.pop_front();
cout<<"删除链首元素后。链表为:";
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
//----------使用list成员函数pop_back删除链尾元素----------
listintegers.pop_back();
cout<<"删除链尾元素后,链表为:";
for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++)
{
cout<<*listiter<<" ";
}
cout<<endl;
system("pause");
return 0;
}
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5380170.html,如需转载请自行联系原作者