STL 整理1(map、set、vector、list、stack、queue、deque、priority_queue)

解决群晖NAS无法拉取docker镜像问题 在2024-06-01日以前,使用SSH登录后是可以直接拉取docker镜像的;但是之后当我们使用SSH登录上群晖NAS,使用【sudo -i】切换到超管拉取镜像会提示报错【error pulling image configuration: Get "https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/cf/cff6b68a194a672fd337d8728bfb252071012cce6 阅读详情
向量(vector) <vector>

连续存储的元素<vector>

Vector<int>c;

c.back()    传回最后一个数据,不检查这个数据是否存在。

c.clear()     移除容器中所有数据。

c.empty()   判断容器是否为空。

c.front()     传回地一个数据。

c.pop_back() 删除最后一个数据。

c.push_back(elem)  在尾部加入一个数据。

c[i] 等同于 c.at(i);

列表(list) <list>

由节点组成的双向链表,每个结点包含着一个元素<list>

list<int> list1(1,2,3)

front()返回第一个元素的引用  int nRet =list1.front()    // nRet = 1

back()返回最后一元素的引用  int nRet =list1.back()     // nRet = 3

push_back()增加一元素到链表尾 list1.push_back(4)       //list1(1,2,3,4)

push_front()增加一元素到链表头  list1.push_front(4)      //list1(4,1,2,3)

pop_back()删除链表尾的一个元素 list1.pop_back()          //list1(1,2)

pop_front()删除链表头的一元素  list1.pop_front()          //list1(2,3)

clear()删除所有元素   list1.clear();   // list1空了,list1.size()=0

sort()对链表排序,默认升序(可自定义回调函数) 

list对象L1(4,3,5,1,4)  L1.sort();                

 //L1(1,3,4,4,5) L1.sort(greater<int>()); 

//L1(5,4,4,3,1)

insert()在指定位置插入一个或多个元素

list1.insert(++list1.begin(),9);  // list1(1,9,2,3)

list1.insert(list1.begin(),2,9);  // list1(9,9,1,2,3);

list1.insert(list1.begin(),list2.begin(),--list2.end());//list1(4,5,1,2,3);

swap()交换两个链表(两个重载)

list1.swap(list2);   //list1(4,5,6) list2(1,2,3)

unique()删除相邻重复元素

L1(1,1,4,3,5,1)

L1.unique();// L1(1,4,3,5,1)

merge()合并两个有序链表并使之有序

// 升序list1.merge(list2);          //list1(1,2,3,4,5,6) list2现为空

// 降序L1(3,2,1), L2(6,5,4)L1.merge(L2, greater<int>()); //list1(6,5,4,3,2,1) list2现为空

reverse()反转链表:list1.reverse();     //list1(3,2,1)

remove()删除链表中匹配值的元素(匹配元素全部删除)list对象L1(4,3,5,1,4)L1.remove(4);               //L1(3,5,1);

empty()判断是否链表为空bool bRet =L1.empty(); //若L1为空,bRet = true,否则bRet = false。

rbegin()返回链表最后一元素的后向指针(reverse_iteratoror const)list<int>::reverse_iterator it = list1.rbegin();  //*it = 3

rend()返回链表第一元素的下一位置的后向指针list<int>::reverse_iteratorit = list1.rend(); // *(--riter) = 1

 

集合(set) <set>

由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>

set<type>: 以less<>为排序法则的set

set<type,op>: 以op为排序法则的set

struct op{

    bool operator()(const rec&a,const rec&b){

        return a.x<b.x||a.x==b.x&&a.y<b.y;

    }

};

1.1 set::begin

功能:返回第一个元素的定位器(iterator)的地址。

set <char>::iterator cp;

ctr.insert('a');

ctr.insert('b');

cp=ctr.begin(); //定位到ctr 的开始位置

1.2 set::clear

功能:将一个set 容器的全部元素删除。

1.3 set::count

功能:返回对应某个关键字的元素的个数。好像都是1吧

1.4 set::empty

功能:测试一个set 容器是否为空。

1.5 set::end

功能:返回最后一个元素后面的定位器(iterator)的地址。

1.7 set::erase

功能:将一个或一定范围的元素删除。

1.8 set::find

功能:求出与给定的关键字相等的元素的定位器。

set <string> ctr;

    ctr.insert("abc");

    ctr.insert("abcd");

    ctr.insert("abcf");

    set <string>::iterator cp;

    cp=ctr.find("abc"); //查找key=1 的元素

    if(cp!=ctr.end())

        cout<<*cp <<endl;//显示abc

    cp=ctr.find("adf"); //查找key=2 的元素

    if(cp!=ctr.end())

        cout<<*cp <<endl;//不显示

    cp=ctr.find("gfv"); //查找key=3 的元素

    if(cp!=ctr.end())

        cout<<*cp <<endl;// 不显示

1.10 set::insert

功能:将一个元素或者一定数量的元素插入到set 的特定位置中。

1.25 set::upper_bound

功能:求出指向第一个关键字的值是大于一个给定值的元素的定位器。

cp=ctr.upper_bound(2);//输出比2大的最小元素

多重集合(multiset)< set>

允许存在两个次序相等的元素的集合 <set>

multiset<type>: 以less<>为排序法则的multiset

multiset<type, op>: 以op为排序法则的multise

struct op{

bool operator()(const rec&a,const rec&b){

        return a.x<b.x||a.x==b.x&&a.y<b.y;

    }

};

multiset<int>h;

__typeof(h.begin()) c=h.begin();//c指向h序列中第一个元素的地址,第一个元素是最小的元素

printf("%d ",*c);//将地址c存的数据输出

h.erase(c);//从h序列中将c指向的元素删除

__typeof()是个好东西~

栈(stack)  <stack>

后进先出的值的排列 <stack>

定义一个stack的变量stack<int> s;

入栈,如例:s.push(x);

出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。

访问栈顶,如例:s.top()

判断栈空,如例:s.empty(),当栈空时,返回true。

访问栈中的元素个数,如例:s.size()

队列(queue) <queue>

先进先出的执的排列 <queue>

定义一个queue的变量     queue<Type> M
查看是否为空范例        M.empty()   是的话返回1,不是返回0;
从已有元素后面增加元素M.push()
输出现有元素的个数        M.size()
显示第一个元素              M.front()
显示最后一个元素           M.back()
清除第一个元素              M.pop()

优先队列(priority_queue) <queue>

元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>

1、默认从大到小

priority_queue<int> qi;

2、从小到大输出可以传入一个比较函数,使用functional.h函数对象作为比较函数,great<int>(小到大) less<int>(大到小)

priority_queue<int, vector<int>, greater<int> >qi2; 第二个参数为容器类型。第三个参数为比较函数。

3、自定义:

struct cmp  // 最小优先队列

{

    bool operator()(const long long i,constlong long j)

    {

        return i>j;

    }

};

priority_queue<int,vector<longlong>,cmp> Q;

 

 

struct node // 最小优先队列

{

    int id,len;

    bool operator < (const node &b)const// 只能重载小于号

    {

        return len>b.len;

    }

};

priority_queue<node>Q;

 

Q.empty() // 判断队列是否为空返回ture表示空返回false表示空 bool

Q.top() // 返回顶端元素的值元素还在队列里

Q.pop() // 删除顶端元素 void

Q.push(V) // 把long long型的数V加入到队列里它会制动条件V的位置void

Q.size() // 返回队列里元素个数 unsigned int

双端队列(deque) <deque>

连续存储的指向不同元素的指针所组成的数组<deque>

deque<int>c

c.pop_back()      删除最后一个数据。

c.pop_front()      删除头部数据。

c.push_back(elem) 在尾部加入一个数据。

c.push_front(elem) 在头部插入一个数据。

c.clear()          移除容器中所有数据。

c.front()          传回地一个数据。

c.back()          传回最后一个数据,不检查这个数据是否存在。

c.size()           返回容器中实际数据的个数。

c.empty()         判断容器是否为空。

c[i] 等同于 c.at(i);

【网络】叶脊(Spine-Leaf)网络拓扑下全三层网络设计与实践(二) - 网络规划 2. 全三层架构设计思路 采用全三层网络架构设计的出发点是: 使用尽量少的交换机高级功能,可以尽可能减少由于功能bug故障造成的问题; 使用尽量少的网络协议,以兼容不通厂商的网络设备 实现简单,易于维护,绝对可靠的路由协议; 通过控制路由来调度流量,尽量减少设备或协议的故障域; 牺牲高级功能带来的便捷,得到更高的可用性和性能; 由上述原则,本文的设计选择只使用静态路由和BGP... 阅读详情

相关推荐

MCGS 和 200SMART 时间同步

在实际应用中,PLC经常会因为断电原因,导致时间不准确。假设我们设置了一个投加泵,每天8-18点投加。屏幕上显示的时间和PLC内部的时间,很可能不一样。所以需要在触摸屏上读取PLC的时间,并且提供设置功能。

mmxxoo_xxmmp的博客 1521

stl的multiset和set和priority_queue区别

优先级队列只允许按照排序顺序访问一个元素 - 即,可以获得最高优先级的项目,而当删除该项目时,可以获得下一个最高优先级,依此类推。 优先级队列还允许重复元素,因此它更像是一个multiset而不是set . 一个set允许以排序顺序进行完全访问,例如,可以在集合的中间某处找到两个元素,然后按照从一个到另一个的顺序遍历。

Xia Qiaolin - 优快云 2612

光谱预处理最简单实现方法--基于OpenSA光谱分析库

系列文章目录 “光晰本质,谱见不同”,光谱作为物质的指纹,被广泛应用于成分分析中。伴随微型光谱仪/光谱成像仪的发展与普及,基于光谱的分析技术将不只停留于工业和实验室,即将走入生活,实现万物感知,见微知著。本系列文章致力于光谱分析技术的科普和应用。 文章目录系列文章目录前言一、数据来源二、代码解读2.1 读取数据2 .2 划分数据集2 .3 返回训练集和测试集并绘制光谱图片2.4 建立1-D CNN模型2.5 训练1-D CNN模型2.6 测试1-D CNN模型2.7 运行CNN模型,并用查看结果总结

Echo_Code的博客 7068

Linux-进程描述符 task_struct 详解

  为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块 PCB(Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个 PCB,在创建进程时,建立 PCB,伴随进程运行的全过程,直到进程撤消而撤消。PCB 记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行...

weixin_30522183的博客 259

如何使用MCP2518FD外部CAN FD控制器实现速速CAN通信

1、SPI时序MCP2518FD外部CAN FD控制器具有小尺寸和SPI接口,可实现轻松连接。可将CAN FD通道轻松添加到缺少CAN FD外设或没有所需CAN FD通道的微控制器上。MCP2518FD支持经典格式 (CAN 2.0B) 和CAN灵活数据速率 (CAN FD) 格式中的CAN帧格式,符合ISO11898-1:2015标准。框图:本文实验板MCU:CAN FD控制器:MCP2518FDCAN FD收发器:ATA6560开发环境:想了解开发板更详细信息,请点击。

qq_57798018的博客 1万+

DCDC--控制方式(Control Mode)

DCDC反馈控制方式

网始如芯个人博客 1万+

Linux系统中的日志管理

企业级日志管理及优化方式 前言 什么是日志? 系统不会说话,系统有什么状况和问题通过日志告诉给管理员 本章讲解日志的采集方式有:journald和rsyslog,这两个命令是完成日志的采集工作,不是产生日志的,是日志的搬运工! 采集命令不同,采集方式不同,让我们一起来探索吧 系统启动自动打开的shell会一直产生日志 Linux系统中运行的程序通常会把一些系统消息和错误消息写入对应的日志中,若是...

baidu_40389082的博客 962

NXP S32K3xx 多次复位(reset)后MCU跑死、崩溃、出错分析

s32k3出现多次复位后死机的情况

HeFlyYoung的博客 9515

c++中STL之heap, priority_queue使用

C++中堆的应用:make_heap, pop_heap, push_heap, sort_heap, priority_queue make_heap, pop_heap, push_heap, sort_heap都是标准算法库里的模板函数,用于将存储在vector/deque 中的元素进行堆操作,对不愿自己写数据结构堆的C++选手来说,这几个算法函数很有用,下面是这几个函数操作vecto

longhopefor,开启学习之路 1万+

stm32使用TB6600驱动器控制42BYGH型步进电机

stm32使用TB6600驱动器控制42BYGH型步进电机

qq_35653974的博客 9589

UG\NX二次开发 一个创建小平面体的例子

介绍。

王牌飞行员_里海的博客 445

C++中STL容器总结

STL容器1、容器分类 1、容器分类 STL中通常将容器分为三类:顺序容器、关联容器和容器适配器。 1、顺序容器 是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。 顺序容器包括: vector(向量)、list(列表)、deque(队列)...

EricLee23 2363

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在状态所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,,两方都是一对一的关系。复用功能。

Car12 707

STL容器及其简单应用(stack、priority_queue、vector、deuqe、list、map/multimap、set/multiset)

目录前言【1】stack操作以及应用二、使用步骤1.引入库2.读入数据总结 前言 【1】stack操作以及应用 #include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue&.

hanhan的博客 789

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)

向量(vector)  连续存储的元素 Vectorc; c.back()    传回最后一个数据,不检查这个数据是否存在。 c.clear()     移除容器中所有数据。 c.empty()   判断容器是否为空。 c.front()     传回地一个数据。

深秋的落叶 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【C++】一文速通STL六大组件之容器

STL容器【保姆式教学】,主要针对STL中容器版块的详细教学。 STL的容器种类分为顺序性容器、关联式容器和容器适配器 vector(向量)、deque(双端队列)、list(双向循环链表)、stack(堆栈)、map(映射)

做技术人 · 产优质博客 · 找好工作 2937

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[转]STL库整理(map、set、vector、list、stack、queue、deque、priority_queue)

转自优快云http://blog.youkuaiyun.com/lmyclever/article/details/6750041向量(vector) 连续存储的元素Vectorc;c.back()    传回最后一个数据,不检查这个数据是否存在。c.clear()     移除容器中所有数据。c.empty()   判断容器是否为空。c.front()     传回地一个数据。c.pop_back() 删

Booky的专栏 916

C++ STL库容器整理

C++ STL库 容器整理 Vector: 支持随机access 元素在内存中连续存储 会自适应扩容(容量满时插入,会创建一个新的容量为之前两倍的数组,然后原来的元素复制到新数组,原数组删除。但是删除的话并不会影响容量,所以要注意大量删除时,要记得收缩内存,以免造成浪费) 可access任意元素 在后面加很快速,其他位置很糟糕(要复制vector,然后增加进去,然后重新放在内存中一个地方) 使用方法: 定义:Vector<‘datatype’> V; vec.begin(), vec.end(

He0_0Qing的博客 737

STL (程序整理集)

(1)使用STL算法sort()实现整形数组a的递增排序: #include&lt;algorithm&gt; using namespace std; void main() { int a[]={2,5,4,1,3}; sort(a,a+5); for(int i=0;i&lt;5;i++) printf("%d",a[i]);//输出:1 2 3 4 5 printf("\n"); } (...

qq_42403069的博客 931

【C++11】C++ STL(面试复习整理-2.0)

1、六大组件介绍 STL六大组件 容器:数据结构,用来存放数据 算法:常用算法 迭代器:容器和算法之间的胶合剂,“范型指针” 仿函数:一种重载了operator()的类,使得这个类的使用看上去像一个函数 配置器:为容器分配并管理内存 适配器:修改其他组件接口 2、容器 vector 底层为数组,支持随机访问,节点大小是动态的,支持下标访问。随机存取效率很高(O(1)),插入效率不高。 扩容原理:以原大小的两倍配置一份新空间,将原空间数据拷贝过来,会导致迭代器失效 常用函数 size():.

我的笔记本 1999

C++ STL 几个容器的底层实现

C++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下: [堆1] -->[堆2] --&gt...

大隐隐于野 1874

[ZZ] STL 整理(map、set、vector、list、stack、queue、deque、priority_queue) .

转自深秋的落叶 向量(vector)<vector> 连续存储的元素<vector> Vector<int>c; c.back()传回最后一个数据,不检查这个数据是否存在。 c.clear() 移除容器中所有数据。 c.empty()判断容器是否为空。 c.front()...

WayneChen1993的博客 149

C++面试或竞赛中 STL常用函数

C++面试、大学生竞赛STL常用的容器函数

kittoyuehu的博客 806

黑马程序员C++学习笔记(第三阶段核心:STL)--- 更新中

目录vector 动态数组嵌套传送门 vector 动态数组 (*begin) 解析的是 vector<数据类型> 中的数据类型 #include<iostream> using namespace std; #include<vector> #include<algorithm> void test01(){ // 创建 vector<int> v; // 插入尾部 v.push_back(10); v.push_back(20)

TI__boyue的博客 1573
上一篇: 用两个栈实现一个队列
下一篇: 动态链接库与静态链接库的区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值