容器list与slist的简单应用
来源:互联网 发布:mysql截取日期年月日 编辑:程序博客网 时间:2024/05/08 13:51
STL中List是双向链表,而Slist是单向链表。它们的区别:Slist的迭代器是单向的Forward Iterator,而list的迭代器是双向的Bidirectional Iterator。Slist所耗用的空间更小,操作更快。它们共同的特点是,插入、移除、接合等操作并不会造成原有的迭代器失效。slist插入时,需要从前遍历,找到插入点的位置。为了更快插入,提供了insert_after,erase_after。
list与slist的示意图:
简单应用:
#include <iostream> #include <slist> #include <list> using namespace std; int main(){ slist<int> sl; //创建一个不存在任何元素的slist对象sl list<int> ls; slist<int>::iterator islist;//创建容器迭代器,访问容器中的元素 list<int>::iterator ilist; ls.push_front(2);//在list的头部添加一个元素 ls.push_front(1); ls.push_back(3);//在list的末尾添加一个元素 ls.push_back(4); ls.push_back(5); ilist = --ls.end(); cout << *ilist << endl; --ilist; cout << *ilist << endl; --ilist; ilist = ls.erase(ilist);//删除当前位置的元素,ilist向后移一位 //ls.erase(ilist);//ilist仍指向当前位置 cout << *ilist << endl; ilist = ls.insert(ilist,3);//ilist指向当前插入的元素 //ls.insert(ilist,3);//ilist指向插入之前的元素 cout << *ilist << endl; for(ilist=ls.begin(); ilist!=ls.end(); ilist++) cout << *ilist << " "; cout<<endl; islist = sl.previous(sl.end()); cout<<*islist<<endl; islist = sl.insert_after(islist, 61); //++iLast;//注意slist没有实现operator--,因为这是一个forward iterator islist=sl.begin(); cout<<*islist<<endl; islist = sl.insert_after(islist, 62); //在当前位置islist后面插入后,iLast指向当前插入的元素 cout<<*islist<<endl; sl.push_front(66);//在slist的头部添加一个元素 islist = sl.insert_after(islist, 63); cout << *islist <<endl; //结果为63 sl.insert_after(islist, 64); cout << *islist <<endl; //结果为63,islist仍指向63 sl.insert_after(islist,65);//此时,slist中元素排列为66 61 62 63 65 64,islist仍指向63 islist = sl.erase_after(islist);//删除islist指向的元素后面的元素,ilist向后移一位 sl.erase(islist);//删除islist所指向的元素,islist指向删除的元素 //sl.erase_after(islist);////删除islist指向的元素后面的元素,ilist仍指向63 cout << *islist <<endl; islist = sl.previous(sl.end()); cout<<*islist<<endl; //从头到尾打印链表元素 for(islist=sl.begin(); islist!=sl.end(); islist++)//打印61 62 63 64 65 cout << *islist << " "; cout << endl; return 0; }
运行结果:
5
4
4
3
1 2 3 4 5
-858993460
61
62
63
63
64
63
66 61 62 63
0 0
- 容器list与slist的简单应用
- Array与List的简单应用
- list的简单应用
- 【STL源码剖析读书笔记】【第4章】序列式容器之list和slist
- STL源码剖析-序列式容器之list和slist
- 【STL】顺序容器 — slist
- slist双向链表容器
- list容器的一些简单操作
- difference between slist and list.
- List容器应用
- C++ list容器应用
- Unity IOC容器的简单应用
- C++容器排序算法的简单应用
- 容器query与list
- STL学习笔记之容器--slist
- map容器简单应用
- STL List容器 简单模拟
- 【day0412 C++】顺序容器 STL list类的应用
- 一起来写个Nice的图案密码锁屏
- 第三方开源库:Logger
- C#基础
- Sublime Text 3
- 趣味算法之趣味素数
- 容器list与slist的简单应用
- 总结
- 单链表的整表创建的算法思路--头插法 尾插法 整体删除
- DDX_Control 与 DDX_Text 区别
- 内连接和自然连接
- Eclipse安装错误"java was started but returned exit code=13"
- caffe code 理解-solver.cpp&&sgd_solver.cpp
- c++调用函数
- API 25 (Android 7.1.1 API) widget.ImageView——属性分析