voidTestList(){string str="I love BeiJing";list<char>l(str.begin(),str.end());//迭代器区间构造//正向遍历list<char>::iterator it=l.begin();while(it!=l.end()){cout<<*it;it++;}cout<<endl;//反向遍历list<char>::reverse_iterator rit=l.rbegin();while(rit!=l.rend()){cout<<*r...
C++中的list是一个双向链表,允许高效地在列表的开头、结尾及任意位置插入和删除元素。与vector不同,list不支持随机访问,但在动态内存管理上表现优异,可以最小化重新分配内存的开销。 1.2 使用list的原因 list非常适合频繁插入和删除的场景。例如,在一个待办事项应用中,任务会动态添加和移除,因此使用list能够提高效率。
list<int>l1;list<int>::iterator it;l1.assign(3,10);//将l1中的元素初始化为10个3list<int>l2;l2.assign(l1.begin(),l1.end());//将l1中的元素赋值给l2list<int>::iterator it2=l1.end();it2--;for(it=l1.begin();it!=it2;it++){cout<<*it<<" ";}l1.assign(4,1);//assign函数...
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是带头双向循环链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。 3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝...
list<int>l8{1,2,3,4,5};cout<<l8.front()<<endl;cout<<l8.back()<<endl; 1. 2. 3. list的插入与删除 在list首元素前插入值为val的元素 list<int>l9(5,9);l9.push_front(1);paint_list(l9); 1. 2. 3. 删除list中的第一元素 ...
1. list的节点 众所周知list是链表,因此它一定需要一个节点类型,以下是SGI STL list的节点类型: //list的节点类型template<typenameT>structlistNode{listNode<T>*next;listNode<T>*prev;Tdata;}; 2. list的迭代器 由于list不像vector一样所有的节点都存储在一块连续的空间中,相反list的节点存储是不连续的。
学习了vector与string我们可以知道,所谓的STL就是将字符串,数组等数据结构进行严密地封装,方便我们直接使用而不需要进行临时创建,本节将介绍STL中的list,该类是对双向带头循环链表的使用。 1.list的介绍 list表示的是一个双向带头循环链表,允许在常数范围内的任意位置进行插入和删除,且前后可以进行双向迭代。其缺陷和...
下面将参照list的源码,将其分为下面几部分去讲 1.结点 既然list是链表,那就必须得定义它自己的结点类 在源码中它的结点是这样子的 2.迭代器 不像vector是连续的内存空间,所以可以直接用指针作为迭代器 在list中由于是链式存储的,所以得定义一个属于自己的迭代器 ...
简介:【C++】STL —— list的基本使用 一、list容器的简介 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是 双向链表结构 ,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。