C++ STL常用函数总结

一些总结,有错误欢迎指正!!!

1 vector

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;int main ()
{//vectorvector<int> a;a.size(); a.empty();a.clear();a.front();a.back();a.push_back();a.pop_back();a.begin(), a.end();//[]支持随机寻址,类似数组//遍历方式:3种for(int i = 0; i < a.size(); i ++ )for(vector<int>::iterator i = a.begin(); i != a.end(); i ++ )//vector<int>::iterator 可以写成autofor(auto x : a)//支持比较运算,按照字典序return 0;
}

2 pair

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;int main ()
{//pair 好处是相当于帮我们实现了一个结构体,并且自带一个比较函数pair<int, string> p;p.first();p.sceond();//支持比较运算,p = make_pair(10, "aaa");p = {20, "abc"};//也可以存3个东西pair<int, pair<int, int>> pp;return 0;
}

3 string

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;int main ()
{//stringstring s = "aaa";s.size(); s.length();//功能和size一样s.empty();s.clear();//支持直接加的操作s += "bbb";a.substr(1, 2);//两个参数,1是开始取子串的下标,2是子串的长度。//如果第二个参数超过了剩余部分的长度,就会到串的最后停止。//也可以不给参数,默认直接取到最后//如果用printf输出时:需要注意,可以用s.c_str()取到s存储字符串的起始地址printf("%s", s.c_str());return 0;
}

4 queue

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;int main ()
{//queue  先进先出queue<int> q;q.size();q.empty(); // 注意没有clear 函数q = queue<int>(); //想要清空一个队列可以重新构造一个q.push(); //向队尾插入一个元素q.front(); //返回队头元素q.back();  //返回队尾元素q.pop();   //弹出队头元素return 0;
}

5 priority_queue

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>using namespace std;int main ()
{//priority_queue 默认大根 ,别忘记这个需要include queue//实现小根//(1)插入的时候插入-x;//(2)priority_queue<int, vector<int>, greater<int>> heap;priority_queue<int> heap;heap.push();//插入一个元素heap.top(); //返回堆顶元素heap.pop(); //弹出堆顶元素return 0;
}

6 stack

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <stack>using namespace std;int main ()
{//stackstack<int> stk;stk.size();stk.empty();stk.push();stk.top();stk.pop();return 0;
}

7 deque

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;int main ()
{//deque 双端队列,相当于加强版的vectordeque<int> q;q.size();q.empty();q.clear();q.front();q.back();q.push_back();//队尾插入q.pop_back();//队尾弹出q.push_front();//队头插入q.pop_front;//队头弹出//也支持[]随机寻址q.begin(); //支持迭代器q.end();return 0;
}

8 set、map、multiset、multimap

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <set>
#include <map>using namespace std;int main ()
{//动态维护有序序列//(1)set & multiset :size(), empty(), clear() 时间复杂度O(logn)//begin(), end() ++ -- 返回前驱和后继 时间复杂度O(logn)set<int> S; //不能有重复元素,插入一个重复元素会被忽略,以下函数时间复杂度基本都是lognmultiset<int> MS;S.insert();//插入一个数S.find();  //查找一个数, 不存在返回end()S.count(); //返回一个数的个数,set只返回0或者1S.erase(); //(1)输入是一个数x,删除所有x(multiset会把所有的x都删掉)O(k + logn)//(2)输入一个迭代器,删除这个迭代器(只会删一个迭代器)lower_bound(x); //返回的是: 大于等于x的最小的数的迭代器,如果不存的话返回end()upper_bound(x); //返回的是: 大于    x的最小的数的迭代器//(2)map & multimap :size(), empty(), clear(), begin(), end() ++ -- 返回前驱和后继map<string, int> M;M["aaa"] = 1; //将aaa映射到1multimap<int> MM;S.insert(); //一个映射,插入的数是一个pairS.erase();  //出入参数是一个pair或者迭代器S.find();//[] 像用数组那样用,但是时间复杂度是O(logn)lower_bound();upper_bound();return 0;
}

9 unordered_set、unordered_map、unordered_multiset、unordered_multimap

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>using namespace std;int main ()
{//和set、map、multiset、multimap用法类似,但是增删改查时间复杂度是O(1)//不支持 lower_bound() 和 upper_bound(), 以及迭代器的 ++ --unordered_set<string, int> a;unordered_map<string, int> b;unordered_multiset<string, int> c;unordered_multimap<string, int> d;return 0;
}

10 bitset

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>using namespace std;int main ()
{//bitset 可以省8倍空间bitset<10000> S;//支持所有位运算操作/*~s, &, |, ^>>, <<==, !=[]*/count(); //返回有多少个1any(); //判断是否至少有一个1none();//判断是否全为0set();//把所有位置设置成1set(k, v); //将第k位变成vreset(); //把所有位变成0flip(); //取反,等价于~flip(k);//把第k位取反return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习之路-Hello Python

Python学习之路-Hello Python Python解释器 简介 前面说到Python是解释型语言&#xff0c;Python解释器的作用就是用于"翻译"Python程序。Python规定了一个Python语法规则&#xff0c;根据该规则可编写Python解释器。 常见的Python解释器 CPython&#xff1a;官方…

文件或目录损坏的磁盘修复方法

文件或目录损坏是一种常见的计算机问题&#xff0c;可能由多种原因导致&#xff0c;如磁盘故障、病毒或恶意软件攻击、文件系统错误等。这些损坏可能导致数据丢失或无法访问文件&#xff0c;因此及时修复至关重要。本文将深入探讨文件或目录损坏的原因&#xff0c;并提供相应的…

试用统信服务器操作系统UOS 20

作者&#xff1a;田逸&#xff08;formyz&#xff09; 试用统信Linux操作系统UOS&#xff0c;想了解一下用已有的Linux经验能否轻松驾驭它。以便在某些场景下&#xff0c;可以多一种选择。本次试验在Proxmox VE 8&#xff08;以下简称PVE 8&#xff09;平台下进行&#xff0c;采…

唠一唠Java线程池

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊Java线程池&#xff0c;如果没有线程池&#xff0c;每个线程都需要手动创建和销毁线程&#xff0c;那将是多么低效和耗资源啊&#xff01; 线程池的核心作用就是复用已创建的线程&#xff0c;减少…

一个初级测试工程师的经历--我在阿里的两年

工作两年了&#xff0c;我一直希望让自己每年对测试的理解更深入一层。 谈轮了自己对各种测试的理解&#xff0c;这一年来&#xff0c;虽然对那些理概念的有所加强&#xff0c;自我感觉没有什么质的变化。前些天听我们公司的一位测试经理讲《敏捷测试》豁然开朗。他在学造飞机&…

BGP公认必遵属性——Next-hop(一)

BGP公认必遵属性共有三个&#xff0c;分别是&#xff1a;Next-hop、Origin、As-path&#xff0c;本期介绍Next-hop 点赞关注&#xff0c;持续更新&#xff01;&#xff01;&#xff01; Next-hop 华为BGP路由下一跳特点&#xff1a; 默认情况下传给EBGP邻居的BGP路由的下一跳…

【AnyText】文字处理AI,让平面设计如虎添翼 —— 登录和使用:详细指南!

AnyTex 关于Anytext登录魔搭社区魔搭社区链接魔搭社区登录登录完毕 登录AnyText使用Anytext生成带文字的图片手绘拖框随机 编辑图片中的文字 总结 关于Anytext 2024年1月5日&#xff0c;阿里达摩院宣布推出名为“AnyText”的算法&#xff0c;旨在解决AI绘图在处理文字创作时面临…

Python战机

基础版 import pygame import random# 设置游戏屏幕大小 screen_width 480 screen_height 600# 定义颜色 WHITE (255, 255, 255) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)# 初始化pygame pygame.init()# 创建游戏窗口 screen pygame.display.set_mode((scre…

java解析json复杂数据的两种思路

文章目录 一、原始需求二、简单分析三、具体实现一1. api接口2. 接口返回3. json 数据解析1.&#xff09;引入Jackson库2.&#xff09;定义实体3.&#xff09;解析json字符串4.&#xff09;运行结果 4. 过程分析 四、具体实现二1. 核心代码2.运行结果 五、方案比较六、源码传送…

render 函数中使用组件等

render: (h) > {// 方案1&#xff1a;return h(el-switch, {props: {value: true},on: {change: (e) > {console.log(e, 改变)}}})// 方案二&#xff1a;const onChange (e) > {console.log(e, 改变)}return (<el-switch value{true} onChange{onChange}></…

c++学习:STL库(框架)+字符串模板类string+vector容器+list链表

目录 stl库 常用组件包括 字符串库 字符串模板类string 头文件 最常用的字符串模板类 字符串类型 模板原型 模板的成员数据类型 模板成员函数 有些函数会有重载&#xff0c;可以去下面网址查看std::basic_string - cppreference.comhttps://zh.cppreference.com/w/cp…

Mysql对日期的操作函数

当涉及到日期操作时&#xff0c;MySQL提供了许多内置的日期函数。以下是一些常用的MySQL日期函数以及带有返回值的示例&#xff1a; CURDATE()&#xff1a;返回当前日期。 示例&#xff1a;SELECT CURDATE(); -- 返回当前日期&#xff0c;例如&#xff1a;2024-01-09 NOW()&am…

1.8 day6 IO进程线程

使用有名管道实现两个进程之间的通信 进程A #include <myhead.h> int main(int argc, const char *argv[]) {//创建两个文件描述符用于打开两个管道int fd1-1;int fd2-1;//创建一个子进程int pid-1;if((fd1open("./mkfifo1",O_RDWR))-1){perror("open er…

深度学习 基本理论 3 :物体检测(Anchor base/NMS/softmax/损失函数/BCE/CE/zip

1、 Anchor base和Anchor free 1.1 Anchor base Anchor base&#xff0c;译为基于锚点的一个物体检测方法&#xff0c;也可以叫做基于一组预定义的框模型会预测每个锚点是否存在对象&#xff0c;并预测需要对锚点进行的调整以更好地适应该对象Anchor base物体检测方法&#x…

STM32-04-STM32时钟树

STM32时钟树 什么是时钟&#xff1f; 时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波。&#xff08;时钟是单片机的脉搏&#xff0c;搞懂时钟走向及关系&#xff0c;对单片机使用至关重要&#xff09;。 时钟树 时钟源 2个外部时钟源 高速外部振荡器(HSE…

教你如何将本地虚拟机变成服务器,供其它电脑访问

场景&#xff1a;最近在做数据仓库的作业&#xff0c;需要团队协作&#xff0c;买不起阿里云服务器&#xff0c;所以想到能不能将我本地机上的虚拟机变成服务器&#xff0c;供其它同学的电脑访问。在虚拟机上安装hadoop和hive&#xff0c;然后同学机子上安装kettle进行连接。最…

离线安装jenkins:使用rpm安装包

目录 一、安装jdk1.8二、安装yum软件包三、下载rmp安装包四、安装jenkins的rpm安装包五、创建jenkins文件目录六、设置环境变量七、配置jdk位置八、配置Jenkins配置文件九、启动Jenkins十、访问Jenkins十一、安装Jenkins插件 一、安装jdk1.8 根据博客Linux操作系统安装jdk1.8并…

实战经验分享,Python 连接 Oracle 踩坑实录

最近的一个测试任务需要测试 oracle 同步 hive 数据库的性能&#xff0c;那就需要对 oracle 数据库灌注测试数据。我就又打开了我的IDE&#xff0c;准备把我之前一下可以灌50w数据到 MySQL 的代码&#xff0c;改一改&#xff0c;直接用。 因为我在网上看到&#xff0c;语法上也…

网络安全复习--简答整理

-----------------------------------------------------教材如上图------------------------------------------------------------ 1.对称加密和非对称加密各有什么特点&#xff1f;加密解密过程中有什么区别&#xff1f;优点P38【考】 对称加密的特点&#xff1a;在针对同一…

MVC设计模式和与三层架构的关系

MVC设计模式和与三层架构的关系 MVC是一种设计模式&#xff0c;将软件按照模型、视图、控制器来划分&#xff1a; M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为数据承载Bean&#x…