C++之标准库(STL)容器List的用法

文章目录

        • list说明
        • list定义
        • list使用
          • list赋值操作
          • list数据元素插入和删除操作
          • list数据存取
          • list大小操作
          • list反转排序
          • list访问

list说明

  • 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
  • 链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域
  • List容器是一个双向链表。
  • 使用前需添加头文件
#include

list定义

list<typename> l;   //typename表示链表中元素的类型可以是int、double等。

list使用

C++之标准库(STL)容器List的用法_第1张图片
从上图可以看出链表两端都可以进行元素的操作。

list赋值操作
  • assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身(把数组中的元素拷贝给链表)。
  • assign(n, elem); //将n个elem拷贝赋值给本身。
  • deque& operator=(const deque &deq); //重载等号操作符
  • swap(deq); // 将deq与本身的元素互换

例1:

//例1:assign(beg, end)
list<int> l;
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
l.assign(a, a + 6);
//例2:assign(n, elem)
list<int> l1;
l1.assign(3, 6);
//例4:swap(deq)
list<int> l2, l3;
l2.assign(3, 6);
l3.assign(4, 8);
l2.swap(l3)

运行结果:

1结果:1 2 3 4 5 62结果: 6 6 64结果: l2: 8 8 8 8   l3: 6 6 6
list数据元素插入和删除操作
push_back(elem);//在容器尾部加入一个元素
pop_back();//删除容器中最后一个元素
push_front(elem);//在容器开头插入一个元素
pop_front();//从容器开头移除第一个元素
insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置。
insert(pos,n,elem);//在pos位置插入n个elem数据,无返回值。
insert(pos,beg,end);//在pos位置插入[beg,end)区间的数据,无返回值。
clear();//移除容器的所有数据
erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置。
erase(pos);//删除pos位置的数据,返回下一个数据的位置。
remove(elem);//删除容器中所有与elem值匹配的元素。
list数据存取
front();//返回第一个元素。
back();//返回最后一个元素。
list大小操作
size();//返回容器中元素的个数
empty();//判断容器是否为空
resize(num);//重新指定容器的长度为num,
//若容器变长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
resize(num, elem);//重新指定容器的长度为num,
//若容器变长,则以elem值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
list反转排序
reverse();//反转链表,比如lst包含1,3,5元素,运行此方法后,lst就包含5,3,1元素。
sort(); //list排序
list访问

list<int> l;
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
l.assign(a, a + 6);	

//通过迭代器进行访问
list<int>::iterator;
for (auto it = l.begin(); it != l.end(); it++)
{
	cout << "元素:" << *it << endl;
}

结果:

1 2 3 4 5 6

你可能感兴趣的:(C++,1024程序员节)