首页 > 其他分享 >每天一个知识:STL数据结构

每天一个知识:STL数据结构

时间:2024-08-12 16:52:40浏览次数:9  
标签:返回 知识 头文件 STL 元素 链表 lst position 数据结构

前言

我准备这个参考大量文献,非常辛苦,渴望你能点一个赞,在点个关注,这对我来说非常重要,我会不定时完善这篇文章,望周知

STL是什么?

标准模板库(Standard Template Library,STL) 是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。虽说它主要出现到C++中,但在被引入C++之前该技术就已经存在了很长时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。

1.栈

栈(stack)是限定仅在表尾进行插入或删除,先进来的数,最后才出,头文件<stack>
stack<type>stk

方法功能
stk.empty()栈是否为空
stk.size()返回栈中元素个数
stk.top()返回栈顶元素
stk.push(x)在栈顶加入一个元素
stk.pop()删除栈顶元素(至少有一个元素)

2.队列

队列(queue)是限定在队头进行删除,在后端进行插入,需打开头文件<queue>
queue<type>q

方法功能
q.empty()返回队列是否为空
q.size()返回队列中元素个数
q.front()返回队列队头元素
q.back()返回队列队尾元素
q.push(x)在队尾一个元素
q.pop()删除队头元素(至少有一个元素)

3.链表

链表(list)是支持任何位置插入元素,就像一个链表一样,一个元素只告诉你的上链和下链是谁,这样,删除、插入只波动2个元素,大大增加代码效率,需要打开头文件<list>
list<type>lst

方法功能
lst.empty()返回链表是否为空
lst.size()返回链表中元素个数,复杂度 O ( n ) O(n) O(n)
lst.front()返回链表第一个元素
lst.back()返回链表最后一个元素
lst.clear()擦除所有元素
lst.insert(position,value)在position迭代器前插入元素
lst.erase(position)在position迭代器前删除元素
lst.push_back(x)在链表最后插入一个元素
lst.push_front(x)在链表首段插入一个元素
lst.pop_back()删除链表最后元素(至少有一个元素)
lst.pop_front()删除链表首段元素(同上)
lst.resize(count)更改链表大小

4.向量

向量(vector),又被称为可变长数组,是一个封装了动态大小数组的顺序容器(sequence container),用时需打开头文件<vector>
vector<type>v

方法功能
v.empty()返回向量是否为空
v.size()返回向量中元素个数
v.front()返回向量第一个元素
v.back()返回向量最后一个元素
v.clear()擦除所有元素
v.insert(position,value)在position迭代器前插入元素
v.insert(position,n,x)在position前插入 n n n个 x x x
v.inset(position,first,end)在position前插入同等向量
v.erase(position)在position迭代器指向删除元素
v.erase(first,last)在下标为first一直删到end-1
v.push_back(x)在向量最后插入一个元素
v.pop_back()删除最后元素(至少有一个元素)
v.max_size()返回最大可允许的元素范围
v.at(pos)返回pos位置元素的引用
v.begin()让指针指向头元素
v.end()让指针指向最后,而并非元素
v.rbegin()让指针反向迭代,指向最后一个元素
v.rend()同上,指向第一个元素

键值对

键值对(pair),相当于一个小型struct结构体用时需打开头文件<pair>
pair<type,type>p

映射

映射(map),相当于一个键值对数组,能存下多个键值对,访问时可以

mp[type1,type2]=xxx

用时需打开头文件<map>
map<type1,type2>mp

集合

集合(set)是一个可以去重,自动排列的数据结构,用时需打开头文件<set>

set<int>st;

优先队列

优先队列(priority_queue)可以自动排列队列,用时需打开头文件<queue>

priority_queue<type>pq;

指针

STL中的指针是用来当做“下标”的东西,用法如下

类型<type>::iterator it;

有时遍历忘记iterator怎么拼了,可以用autoauto是通过数据判断是什么类型。

后记

如果有遗漏的,请在评论区留言!

标签:返回,知识,头文件,STL,元素,链表,lst,position,数据结构
From: https://blog.csdn.net/huhuhuhjijijiji/article/details/141100934

相关文章

  • 专题 (五) map 数据结构
    1、用法用法说明1、declare-Amap2、declare-AmyMap=(["my01"]="01"["my02"]="02")3、declare-Amap=()1、声明map变量2、声明map变量的同时可以赋值3、定义一个空mapmap[$_key]=$_count指定key赋值value,其中_key和_value均是shenll变量1、e......
  • 数据结构(一)-绪论
    数据结构(一)-绪论梗概:1.数据1.1数据数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号集合,数据是计算机程序加工的原料。1.2数据元素数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可有若......
  • C/C++ 知识点:using 关键字
    文章目录一、using关键字1、命名空间别名和成员访问2、类型别名3、继承中的`using`声明4、模板别名5、模板中的`using`声明6、总结前言:C++中的using关键字是一个功能丰富的工具,它主要用于命名空间、类型别名、继承以及模板编程中。下面将详细介绍using关键字的几......
  • 5 大场景上手通义灵码企业知识库 RAG
    大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性能及准确性大幅提升,如前端、Java、Go、Python、C++ 等。此外,灵码新增代码提交信息(CommitMes......
  • 5 大场景上手通义灵码企业知识库 RAG
    大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性能及准确性大幅提升,如前端、Java、Go、Python、C++ 等。此外,灵码新增代码提交信息(CommitMes......
  • 不只是前端,后端、产品和测试也需要了解的浏览器知识(二)
    继上篇《不只是前端,后端、产品和测试也需要了解的浏览器知识(一)》介绍了浏览器的基本情况、发展历史以及市场占有率。本篇文章将介绍浏览器基本原理。在掌握基本原理后,通过技术深入,在研发过程中不断创新,推动产品性能、用户体验的提升,来实现业务的增长,创造可持续的价值。一、业......
  • (小白推荐)有关固态电池知识了解
    丰田自2012年开始研究固态电池,并最近宣布已经取得了“技术突破”。预计最早在2027年,丰田将开始生产这种新型电池。这些固态电池能够为电动汽车提供高达1200公里的续航里程,这是目前许多现有车型续航里程的两倍左右。而且,这些电池只需要大约十分钟就能充满电。固态电池是指采......
  • 【Rust光年纪】Rust数据结构库全方位解析:从核心功能到API概览
    提升Rust项目效率的利器:六款优秀数据结构库详解前言随着Rust编程语言的不断发展和普及,开发者们对于高效的数据结构库需求日益增长。在本文中,我们将介绍一些优秀的Rust数据结构库,它们分别为heapless、arrayvec、smallvec、evmap、hashbrown和generic-array。这些库提供了各......
  • 【CAD】CAD入门知识概念、功能和应用
    0.新建项目‘文件’-‘新建’-点击‘打开’旁边的“倒三角图标”-选择‘无样本打开-公制’1.基本操作与设置    右下角齿轮-草图与注释     绘图区-右键-选项-显示-十字光标大小-100    画线:画线结束空格收尾    移动:点击移动-点击对象......
  • 排序算法 内省排序(STL sort) IntroSort --C/C++
    内观排序/内省排序内省排序-维基百科,自由的百科全书(wikipedia.org)内省排序(英语:Introsort)是由大卫·穆塞尔在1997年设计的排序算法。这个排序算法首先从快速排序开始,当递归深度超过一定深度(深度为排序元素数量的对数值)后转为堆排序。采用这个方法,内省排序既能在常规数据集......