当前位置: 首页 > news >正文

list基本使用

list基本使用

  • 构造
  • 迭代器
  • 容量
  • 访问
  • 修改

list容器底层是带头双向链表结构,可以在常数范围内在任意位置进行输入和删除,但不支持任意位置的随机访问(如不支持[ ]下标访问),下面介绍list容器的基本使用接口。

template < class T, class Alloc = allocator > class list;

在这里插入图片描述

构造

1.无参构造

list()

2.使用n个元素val进行构造

list(size_type n,const value_type& value = value_type());

3,拷贝构造

list(const list& x);

4.使用迭代器区间进行构造

list(InputIterator first, InputIterator last);

迭代器

1.正向迭代器

iterator begin();
const_iterator begin() const;

terator end();
const_iterator end() const;

2.反向迭代器

reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
reverse_iterator rend();
const_reverse_iterator rend() const;

容量

1.判断链表是否为空

bool empty() const;

2.获取链表中有效节点个数

size_type size() const;

3.修改容量大小

void resize (size_type n, value_type val = value_type());

访问

1.获取链表第一个节点的值的引用

reference front();
const_reference front() const;

2.获取链表最后一个节点的值的引用

reference back();
const_reference back() const;

修改

1.元素首插

void push_front (const value_type& val);

2.元素尾插

void push_back (const value_type& val);

3.在position位置插入值为val的元素

iterator insert (iterator position, const value_type& val);
void insert (iterator position, size_type n, const value_type& val);

template
void insert (iterator position, InputIterator first, InputIterator last);
//
//Notice that the range includes all the elements between first and last, including the element pointed by first but not the one pointed by last.

5.元素首删

void pop_front();

6.元素尾删

void pop_back();

7.删除position位置的元素

iterator erase (iterator position);
iterator erase (iterator first, iterator last);
//
//the range includes all the elements between first and last, including the element pointed by first but not the one pointed by last.

8.清空链表有效元素

void clear();

9.交换两个链表的所有元素

void swap (list& x);

需要注意的是,list在进行插入操作时,不需要移动数据,因此进行元素插入不会导致迭代器失效,但在进行元素删除时,指向删除元素的迭代器会失效,其他的并没有影响。

http://www.lryc.cn/news/294536.html

相关文章:

  • 网络原理TCP/IP(5)
  • 前端JavaScript篇之JavaScript为什么要进行变量提升,它导致了什么问题?什么是尾调用,使用尾调用有什么好处?
  • React和Vue实现路由懒加载
  • ReactNative实现的横向滑动条
  • 华为自动驾驶干不过特斯拉?
  • docker容器stop流程
  • 生产环境_Spark接收传入的sql并替换sql中的表名与解析_非常NB
  • 【issue-YOLO】自定义数据集训练YOLO-v7 Segmentation
  • 【八大排序】选择排序 | 堆排序 + 图文详解!!
  • C语言贪吃蛇详解
  • go使用gopprof分析内存泄露
  • uniapp中组件库Mask 遮罩层 的使用方法
  • 【数据结构与算法】(7)基础数据结构之双端队列的链表实现、环形数组实现示例讲解
  • 2024 高级前端面试题之 前端工程相关 「精选篇」
  • CSS常用属性
  • AI新宠Arc浏览器真可以取代Chrome吗?
  • 基于Java (spring-boot)的实验室管理系统
  • Android用setRectToRect实现Bitmap基于Matrix矩阵scale缩放RectF动画,Kotlin(一)
  • 【AI绘画+Midjourney平替】Fooocus:图像生成、修改软件(Controlnet原作者重新设计的UI+Windows一键部署)
  • Java技术栈 —— Hive与HBase
  • 【代码随想录-哈希表】有效的字母异位词
  • SQL Server之DML触发器
  • 04. 【Linux教程】安装 Linux 操作系统
  • Facebook群控:利用IP代理提高聊单效率
  • 香港倾斜模型3DTiles数据漫游
  • Go指针探秘:深入理解内存与安全性
  • Oracle12c之Sqlplus命令行窗口基本使用
  • react和antd学习笔记
  • 寒假作业2月5号
  • 滑动窗口(一)