1.功能:将数据进行链式存储
2.链表(list):
- 链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的;
- 链表由一系列节点组成
- 节点:一个是存储数据的数据域,另一个是存储下一个节点地址的指针域
- STL中的链表是一个双向循环链表,由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器。
- list优点:
- 采用动态存储分配,不会造成内存浪费和溢出
- 链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素
- list缺点:链表灵活,但是空间(指针域)和时间(遍历)额外开销较大。
list有一个重要的性质,插入操作和删除都不会造成原有list迭代器的失效,这在vector中是不成立的。
#include<iostream>
#include<list>
using namespace std;
void printlist(const list<int> &L)
{
for(list<int>::const_iterator it=L.begin();it!=L.end();it++)
cout<<*it<<" ";
cout<<endl;
}
void test1()
{
//创建list容器
list<int> L;
//添加数据
L.push_back(1);
L.push_back(2);
L.push_back(3);
L.push_back(4);
//遍历容器
printlist(L); //1 2 3 4
//区间方式构造
list<int>LL (L.begin(),L.end());
printlist(LL); //1 2 3 4
//拷贝构造
list<int>LLL(L);
printlist(LLL); //1 2 3 4
//n个elem
list<int>LLLL(3,6);
printlist(LLLL); //6 6 6
}
int main()
{
test1();
return 0;
}