STL 链表(list)的使用

来源:互联网 发布:网络兼职骗局信誉代刷 编辑:程序博客网 时间:2024/05/01 16:00

简介

链表(list)是STL所提供的一种序列化容器,可实现双向遍历,但是无法提供随机访问。链表的一个优点是无论在任何位置添加、删除元素所需的时间均为常量。


代码示例

/*************************//* ListTest.cpp          *//*************************/#include <iostream>#include <list>typedef std::list<int> IntList;// 打印.static void PrintIntList(IntList& intList, const char * szName);int main(int argc, char *argv[]){int i;// 几种不同构造方式.IntList list_1;IntList list_2(8, 2);IntList list_3(list_2);IntList list_4(list_3.begin(), list_3.end());// 打印.PrintIntList(list_1, "list_1");PrintIntList(list_2, "list_2");PrintIntList(list_3, "list_3");PrintIntList(list_4, "list_4");std::cout<<std::endl<<"初始化链表..."<<std::endl;for(i=5; i>=0; --i){list_1.push_front(i);}for(i=6; i<10; ++i){list_1.push_back(i);}PrintIntList(list_1, "list_1");std::cout<<std::endl<<"反转链表..."<<std::endl;list_1.reverse();PrintIntList(list_1, "list_1");std::cout<<std::endl<<"加入重复元素到链表中..."<<std::endl;list_1.push_back(5);PrintIntList(list_1, "list_1");std::cout<<std::endl<<"对链表排序..."<<std::endl;list_1.sort();PrintIntList(list_1, "list_1");std::cout<<std::endl<<"对链表去重..."<<std::endl;list_1.unique();PrintIntList(list_1, "list_1");std::cout<<std::endl<<"删除链表末位元素..."<<std::endl;list_1.pop_back();PrintIntList(list_1, "list_1");std::cout<<std::endl<<"删除链表首位元素..."<<std::endl;list_1.pop_front();PrintIntList(list_1, "list_1");i = 9527;std::cout<<std::endl<<"删除链表中值为"<<i<<"的元素..."<<std::endl;list_1.remove(i);PrintIntList(list_1, "list_1");i = 6;std::cout<<std::endl<<"删除链表中值为"<<i<<"的元素..."<<std::endl;list_1.remove(i);PrintIntList(list_1, "list_1");i = 4;std::cout<<std::endl<<"重定义链表长度为"<<i<<"..."<<std::endl;list_1.resize(i);PrintIntList(list_1, "list_1");std::cout<<std::endl<<"粘接链表..."<<std::endl;list_1.splice(list_1.end(), list_2, list_2.begin(), list_2.end());PrintIntList(list_1, "list_1");std::cout<<std::endl<<"清空链表..."<<std::endl;list_1.clear();PrintIntList(list_1, "list_1");std::cout<<"链表是否为空:"<<list_1.empty()<<std::endl;return 0;}void PrintIntList(IntList& intList, const char * szName){std::cout<<"["<<szName<<"]: ";std::copy(intList.begin(), intList.end(),std::ostream_iterator<int>(std::cout, " "));std::cout<<std::endl;}


运行结果:



==============================End=================================

0 0
原创粉丝点击