1、list容器简介
链表是以中物理存储单元上的非连续、非顺序的存储结构,数据元素的逻辑顺序都是通过链表中的指针连接次序实现的。链表由一系列的结点(链表中每一个元素被称为结点)组成,结点可以在运行时动态生成。每一个结点包括两部分组成:一部分是数据域 ,另一部分存储的是下一个节点的指针域。相比较于 vector 的连续存储空间,list就显得负责很多,它的好处是每次插入或者删除一个元素时,就是配置或者释放一个元素的空间。因此,对于list 而言,对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或者元素的删除,list永远是常数时间。List 和 vector 是两个被常用的容器,List是一个双向链表,所以list 容器的迭代器 是双向迭代器
2、list 容器 API操作
3、list容器应用
#include
#include
#include
using namespace std;
void printListInt(list &l)
{
list::iterator it;
for(it=l.begin(); it!=l.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}
void test01()
{
list l1;
l1.push_back(10);
l1.push_back(20);
l1.push_back(30);
l1.push_front(40);
l1.push_front(50);
l1.push_front(60);
printListInt(l1);//60 50 40 10 20 30
//list容器 是双向迭代器 不支持+2 支持++,因为++是被重载了
list::iterator it=l1.begin();
it++;
it++;
l1.insert(it, 3, 100);
printListInt(l1);//60 50 100 100 100 40 10 20 30
//删除所有100
l1.remove(100);
printListInt(l1);//60 50 40 10 20 30
//对链表排序
//STL提供的算法 只支持 随机访问迭代器,而list是双向迭代器 所以sort不支持list
// l1.sort(greater());
l1.sort(); //所以list自己提供规则
printListInt(l1);//10 20 30 40 50 60
}
int main(int argc, char *argv[])
{
test01();
return 0;
}