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

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.kler.cn/a/228086.html

相关文章:

  • 算法的时间复杂度
  • 5分钟带你获取deepseek api并搭建简易问答应用
  • 《Java核心技术 卷II》日期和时间API的时间线
  • stack 和 queue容器的介绍和使用
  • Linux - 进程间通信(2)
  • 【shell工具】编写一个批量扫描IP地址的shell脚本
  • 基于深度学习的SSVEP分类算法简介
  • 【Android】RxJava系列01-基本概述和基本用法
  • 【CSS + ElementUI】更改 el-carousel 指示器样式且隐藏左右箭头
  • Centos 7.5 安装 NVM 详细步骤
  • 基于ESP8266 开发板(MCU)遥控小车
  • PHP三级分类数据处理
  • eslint报错文档大量红色报错符号 不自动修正
  • ERP 系统架构的设计与实践总结
  • 课时14:变量基础_变量定义
  • 蓝桥杯第八届省赛题笔记------基于单片机的电子钟程序设计与调试
  • 【华为】GRE VPN 实验配置
  • 彻底学会系列:一、机器学习之线性回归
  • scikit-learn 1.3.X 版本 bug - F1 分数计算错误
  • 【MATLAB源码-第135期】基于matlab的变色龙群优化算法CSA)机器人栅格路径规划,输出做短路径图和适应度曲线。
  • 跟着cherno手搓游戏引擎【20】混合(blend)
  • 全流程机器视觉工程开发(四)PaddleDetection C++工程化应用部署到本地DLL以供软件调用
  • 线性表 —— 数组、栈、队、链表
  • 【SparkML实践7】特征选择器FeatureSelector
  • Redis实现:每个进程每30秒执行一次任务
  • Tomcat组件架构与数据流