STL总结

STL

  • vector 头文件<vector>
  1. 初始化,定义,定义长度,定义长度并且赋值,从数组中获取数据
  2. 返回元素个数size()
  3. 判断是否为空empty()
  4. 返回第一个元素front()
  5. 返回最后一个数back()
  6. 删除最后一个数pop_back()
  7. 插入push_back(x)
  8. 清空clear()
  9. begin()
  10. end()
  11. 使用size()遍历
  12. 使用begin()和end()遍历
  13. 使用auto遍历
  • pair 头文件<utility>
  1. 初始化,pair<int,int>,make_pair(1,1)
  2. 第一个元素first,第二个元素second
  3. 嵌套
  4. 排序
  • queue 头文件<queue>
  1. 初始化
  2. 长度size()
  3. 是否为空empty()
  4. 队尾插入push()
  5. 删除队头pop()
  6. 返回对头front()
  7. 返回队尾back()
  8. 清空,初始化
  • stack 头文件<stack>

  1. 初始化

  2. 长度size()

  3. 栈顶插入一个元素push()

  4. 返回栈顶元素top()

  5. 弹出栈顶元素pop()

  • string 头文件<string>

  1.     初始化
  2.     截取substr(1,5)
  3.     大小和长度 size() length()
  4.     头指针 c_str()
  5.     拼接 +
  6.     尾插 push_back()
  7.     插入 insert()
  • priority_queue 头文件<queue>
  1. 初始化,默认大根堆
  2. 长度size()
  3. 是否为空empty()
  4. 队尾插入push()
  5. 删除队头pop()
  6. 返回堆顶top()
  7. 清空,初始化
  • deque 头文件<deque>
  1. 初始化
  2. 长度size()
  3. 是否为空empty()
  4. 返回第一个元素front()
  5. 返回最后一个数back()
  6. 删除最后一个数pop_back()
  7. 插入push_back(x)
  8. 队首插入一个元素push_front()
  9. begin()
  10. end()
  • set 头文件<set>
  1. 初始化
  2. 返回元素个数size()
  3. 是否为空empty()
  4. 清空clear()
  5. 第几个数begin()
  6. 最后一个的后一个end()
  7. 插入insert()
  8. 查找find()
  9. 删除erase(x)
  10. 返回大于等于x的最小的的迭代器lower_bound(x)
  11. 返回大于x的最小的数的迭代器upper_bound(x)
  • map 头文件<map>
  1. 初始化
  2. 插入insert()
  3. 删除erase()
  4. 查找find()
  5. 个数count()
  6. 返回大于等于x的最小的的迭代器lower_bound(x)
  7. 返回大于x的最小的数的迭代器upper_bound(x)
  • unordered
  1. unordered_set
  2. unordered_map
  3. unordered_muliset
  4. unordered_multimap
  • algorithm 头文件<algorithm>
  1. 排序sort()
  2. 最值max、min
  3. 最大公约数__gcd
  4. 交换swap(a,b)
  5. 二分查找lower_bound()、upper_bound()
  6. 倒置reverse()
  7. 全排列next_permutation()

示例代码

vector 

#include<iostream>
#include<vector>
using namespace std;
int main () {//初始化一个vector,长度为10,值都为1vector<int> v0(10,1);//初始化v1,它的值从arr中拿,初始化v2,它的值从v1拿,使用三种遍历遍历出v2 int arr[10] = {1,2,3,4,5,6,7,8,9,10};vector<int> v1(arr,arr+10);vector<int> v2(v1.begin(),v1.end());//第一种for(int i=0;i<v2.size();i++) cout<<v2[i]<<" ";cout<<endl;//第二种for(auto i=v2.begin();i!=v2.end();i++) cout<<*i<<" ";cout<<endl;//第三种 for(auto x:v2) cout<<x<<" ";cout<<endl;//返回元素个数size()cout<<v2.size()<<endl;//判断是否为空empty()cout<<v2.empty()<<endl;//返回第一个元素front()cout<<v2.front()<<endl;//返回最后一个数back()cout<<v2.back()<<endl;//删除最后一个数pop_back()v2.pop_back();//插入push_back(x)v2.push_back(15);//清空clear() v2.clear();return 0;
}

ede8cdff72dd4da38278c6981a478e3d.png

pair

#include<iostream>
#include<vector>
#include<algorithm>
#include<utility>
using namespace std;//根据first的值升序排序
bool cmp1(pair<int,int> a,pair<int,int> b) {return a.first < b.first;
}
//根据second的值升序排序
bool cmp2(pair<int, int> a, pair<int, int> b)
{return a.second < b.second;
}int main () {//初始化,pair<int,int>,make_pair(1,1)pair<int,int> p(1,1);pair<int,int> q = make_pair(1,1);//第一个元素first,第二个元素secondcout<<p.first<<endl;cout<<p.second<<endl;//嵌套pair<int,pair<int,int>> k(2,{1,1});//排序vector<pair<int, int>>vec;vec.push_back({ 1,2 });vec.push_back({ 4,2 });vec.push_back({ 3,3 });vec.push_back({ 2,1 });sort(vec.begin(), vec.end(), cmp1);cout << "根据first的值升序排序:" << endl;for (auto it = vec.begin();it != vec.end();it++){cout << "(" << it->first << "," << it->second << ")" << endl;}sort(vec.begin(),vec.end(),cmp2);cout << "根据second的值升序排序:" << endl;for (auto it = vec.begin();it != vec.end();it++){cout << "(" << it->first << "," << it->second << ")" << endl;}return 0;
}

0356071fb59a41d99188724eebdced1f.png

queue

#include<iostream>
#include<queue>
using namespace std;int main () {//初始化queue<int> q;//队尾插入push()q.push(1);q.push(2);q.push(3);//长度size()cout<<q.size()<<endl;//是否为空empty()cout<<q.empty()<<endl;//删除队头pop()q.pop();//返回对头front()cout<<q.front()<<endl;//返回队尾back()cout<<q.back()<<endl;//清空,初始化q = queue<int>();return 0;
}

67c683cb370a43e5ade17045f3d902e2.png

#include<iostream>
#include<stack>
using namespace std;int main () {//初始化stack<int> s;//栈顶插入一个元素push()s.push(1);s.push(2);s.push(3);//长度size()cout<<s.size()<<endl;//返回栈顶元素top()cout<<s.top()<<endl;//弹出栈顶元素pop()s.pop();cout<<s.top();return 0;
}

525d72112cae48679e3dac44c0a4d0fe.png

string

#include<iostream>
#include<string>
using namespace std;int main () {//初始化string s = "abcdefg";//截取string st = s.substr(1,5);cout<<st;//大小和长度 cout<<s.size()<<endl;cout<<s.length()<<endl;//头指针printf("%s",s.c_str()); //拼接st = st + "111";cout<<st<<endl;//尾插s.push_back('h');cout<<s<<endl; //插入s.insert(0,st,0,2);cout<<s<<endl; return 0;
}

priority_queue

#include<iostream>
#include<queue>
using namespace std;int main () {//初始化,默认大根堆priority_queue<int> pq;//队尾插入push()pq.push(1);pq.push(2);pq.push(3);//长度size()cout<<pq.size()<<endl;//是否为空empty()cout<<pq.empty()<<endl;//返回堆顶top()cout<<pq.top()<<endl;//删除队头pop()pq.pop();cout<<pq.top();//清空,初始化pq = priority_queue<int>();return 0;
}

 eacafc2942f140f58be562051ea6d830.png

deque 

#include<iostream>
#include<deque>
using namespace std;int main () {//初始化deque<int> d;//队尾插入push_back(x)d.push_back(1);d.push_back(2);d.push_back(3);//长度size()cout<<d.size()<<endl;//是否为空empty()cout<<d.empty()<<endl;//返回第一个元素front()cout<<d.front()<<endl;//返回最后一个数back();cout<<d.back();//队首插入一个元素push_front()d.push_front(5);//删除最后一个数pop_back()d.pop_back();return 0;
}

5fbe0bf5c3554a5c8d566a4ad2725429.png

set

#include<iostream>
#include<set>
using namespace std;int main () {//初始化set<int> s;//插入insert()s.insert(1);s.insert(2);s.insert(3);s.insert(4);s.insert(5);s.insert(6);//返回元素个数size()cout<<s.size()<<endl;//是否为空empty()cout<<s.empty()<<endl;//查找find()set<int>::iterator it = s.find(3);if(it==s.end()) cout<<false<<endl;else cout<<true<<endl;//删除erase(x)s.erase(2);//返回大于等于x的最小的的迭代器lower_bound(x)cout<<*s.lower_bound(3)<<endl;//返回大于x的最小的数的迭代器upper_bound(x)cout<<*s.upper_bound(3)<<endl;//清空clear()s.clear();return 0;
}

127d02bf4bbb458e874aa8e132b0e8f1.png

map

#include<iostream>
#include<map>
using namespace std;int main () {//初始化map<int,int> m;//插入insert()//m[1] = 1;m.insert(make_pair(1,1));m.insert(make_pair(2,2));m.insert(make_pair(3,3));m.insert(make_pair(4,4));m.insert(make_pair(5,5));//删除erase()map<int,int>::iterator it = m.find(5);m.erase(it);//查找find()it = m.find(5);if(it==m.end()) cout<<false<<endl;else cout<<true<<endl;//返回大于等于x的最小的的迭代器lower_bound(x)it = m.lower_bound(3);cout<<it->second<<endl;//返回大于x的最小的数的迭代器upper_bound(x)it = m.upper_bound(3);cout<<it->second<<endl;return 0;
}

daa0e437fbe544888c2d6f85a01b875c.png

unordered_set

#include<iostream>
#include<unordered_set>
using namespace std;int main () {//初始化unordered_set<int> us;//插入insert()us.insert(1);us.insert(2);us.insert(3);//删除erase()us.erase(3); //查找find()unordered_set<int>::iterator it;it = us.find(3);if(it==us.end()) cout<<false<<endl;else cout<<true<<endl;//插入insert()us.insert(3);it = us.find(3);if(it==us.end()) cout<<false<<endl;else cout<<true<<endl;return 0;
}

9e497c0d30074c4ab1f91d24995e53af.png

algorithm

#include<iostream>
#include<algorithm>
using namespace std;bool cmp(int a,int b) {return a>b;
}int main () {//排序 int arr[] = {1,3,2,5,4,9,7};int length = sizeof(arr)/sizeof(int);sort(arr,arr+length,cmp);for(int i=0;i<length;i++) {cout<<arr[i]<<" ";}cout<<endl;//最值cout<<max(1,3)<<endl; //最大公约数cout<<__gcd(20,30)<<endl;//交换int a = 1;int b = 2;swap(a,b);cout<<a<<endl;//二分查找 int ar[] = {0, 1, 3, 5, 8, 10, 16};cout<<*lower_bound(ar, ar + 7, 3)<<endl;cout<<lower_bound(ar, ar + 7, 3)-ar<<endl;//倒置reverse(arr, arr + sizeof(arr) / sizeof(int)); for(int i=0;i<length;i++) {cout<<arr[i]<<" ";}cout<<endl;//全排列int c[] = {1, 2, 3};do{cout << c[0] << " " << c[1] << " " << c[2] << endl;} while (next_permutation(c, c+3)); return 0;
}

07b6bee5b84842a0a983c27ffd52db36.png

 

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

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

相关文章

SQL SERVER 2008安装教程

SQL SERVER 2008安装教程 本篇文章介绍了安装SQL Server 2008企业版的软硬件配置要求&#xff0c;安装过程的详细步骤&#xff0c;以及需要注意的事项。 安装步骤 (1). 在安装文件setup.exe上&#xff0c;单击鼠标右键选择“以管理员的身份运行”&#xff0c;如下图所示&#…

皮肤性病科专家谭巍主任提出HPV转阴后饮食七点建议

HPV转阴是每一位感染者都期盼的&#xff0c;因为转阴所以健康&#xff0c;只有转为阴性才意味着不具备传染性&#xff0c;从此也不必再害怕将病毒传染给家人的风险&#xff0c;也不必再担忧持续感染而引发的健康风险。总之&#xff0c;HPV转阴是预示感染者恢复健康与否的主要标…

《洛谷深入浅出进阶篇》P1995 程序自动分析——并查集,离散化

上链接&#xff1a;P1955 [NOI2015] 程序自动分析 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1955 上题干&#xff1a; 首先给你一个整数t&#xff0c;代表t次操作。 每一次操作包含以下内容&#xff1a; 1.给你一个整数n&#xff0c;让…

【机器学习13】生成对抗网络

1 GANs的基本思想和训练过程 生成器用于合成“假”样本&#xff0c; 判别器用于判断输入的样本是真实的还是合成的。 生成器从先验分布中采得随机信号&#xff0c;经过神经网络的变换&#xff0c; 得到模拟样本&#xff1b; 判别器既接收来自生成器的模拟样本&#xff0c; 也接…

数据结构:红黑树讲解(C++)

红黑树 1.前言2.红黑树简述2.1概念2.2性质 3.红黑树的插入3.1关于新插入节点的颜色3.2节点的定义3.3插入新节点3.4判断插入后是否需要调整3.5插入后维持红黑树结构&#xff08;重点&#xff09;3.5.1cur、p、u为红&#xff0c;g为黑3.5.2cur、p为红&#xff0c;g为黑&#xff0…

【【VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 】】

VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 LCD 的构造是在两片平行的玻璃基板当中放置液晶盒&#xff0c;下基板玻璃上设置 TFT&#xff08;薄膜晶体管&#xff09;&#xff0c;上基板玻璃上设置彩色滤光片&#xff0c;通…

Flutter 应用启动从闪屏页短暂黑屏再到第一个页面

由于应用初始状态启动会有白屏现象&#xff0c;便使用 flutter_native_splash 2.3.5 插件生成了启动相关的配置&#xff0c;并且按照示例使用了 import package:flutter_native_splash/flutter_native_splash.dart;void main() {WidgetsBinding widgetsBinding WidgetsFlutte…

牛客 —— 链表中倒数第k个结点(C语言,快慢指针,配图)

目录 1. 思路1&#xff1a;倒数第K个节点&#xff0c;就是整数第N-K1的节点 2. 思路2&#xff1a;快慢指针 1. 思路1&#xff1a;倒数第K个节点&#xff0c;就是整数第N-K1的节点 链表中&#xff0c;一共有N个节点&#xff0c;如果我们想要得出倒数第K个节点&#xff0c;我们…

图像倾斜角度求取-Radon变换

Radon算法 Radon&#xff08;拉东&#xff09;算法是一种通过定方向投影叠加&#xff0c;找到最大投影值时角度&#xff0c;从而确定图像倾斜角度的算法。具体过程如图所示 图1 Radon变换算法 Radon计算示例 对于纹理方向明显的图像&#xff0c;如图2所示&#xff0c;可以通…

【设计模式】聊聊模板模式

原理和实现 设计模式的原理和实现是比较简单的&#xff0c;难的是掌握具体的应用场景和解决什么问题。而模板模式是为来解决复用和拓展两个问题。 模板模式在一个方法中定义好一个算法框架&#xff0c;然后将某些步骤推迟到子类中实现&#xff0c;子类可以在不修改父类流程的时…

qsort使用举例和qsort函数的模拟实现

qsort使用举例 qsort是C语言中的一个标准库函数&#xff0c;用于对数组或者其他数据结构中的元素进行排序。它的原型如下&#xff1a; void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 我们可以去官网搜来看一看&#xff1a;…

lxml基本使用

lxml是python的一个解析库&#xff0c;支持HTML和XML的解析&#xff0c;支持XPath解析方式&#xff0c;而且解析效率非常高 XPath&#xff0c;全称XML Path Language&#xff0c;即XML路径语言&#xff0c;它是一门在XML文档中查找信息的语言&#xff0c;它最初是用来搜寻XML文…

2024全网最新最全的Pytest接口自动化测试框架教程

pytest编写的规则&#xff1a; 1、测试文件以test_开头&#xff08;以_test结尾也可以&#xff09; 2、测试类以Test开头&#xff0c;并且不能带有__init__方法 3、测试函数以test_开头 4、断言必须使用assert pytest.main([-s,-v]) &#xff1a;用来执行测试用例 -s 打印prin…

卷积神经网络(CNN)天气识别

文章目录 前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;我的环境&#xff1a; 2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、构建CNN网络四、编译五、训练模型六、模型评估 前期工作 1. 设置GP…

EEPROM与Flash的区别

EEPROM与Flash的区别 EEPROMEEPROM内部功能框图实现写入数据内部结构存储管在充电或放电状态下有着不同的阈值电压 问题点EEPROM是如何失效的呢&#xff1f;为何EEPROM不能做大呢&#xff1f; ------------------------------------------------------------------------------…

Java多线程(3)

Java多线程(3) 深入剖析Java线程的生命周期&#xff0c;探秘JVM的线程状态&#xff01; 线程的生命周期 Java 线程的生命周期主要包括五个阶段&#xff1a;新建、就绪、运行、阻塞和销毁。 **新建&#xff08;New&#xff09;&#xff1a;**线程对象通过 new 关键字创建&…

tamarin运行

首先我们找到安装tamarin的文件位置&#xff0c;找到以后进入该文件夹下 ubuntuubuntu:~$ sudo find / -name tamarin-prover /home/linuxbrew/.linuxbrew/var/homebrew/linked/tamarin-prover /home/linuxbrew/.linuxbrew/Cellar/tamarin-prover /home/linuxbrew/.linuxbrew/…

mac下vue-cli从2.9.6升级到最新版本

由于mac之前安装了 vue 2.9.6 的版本&#xff0c;现在想升级到最新版本&#xff0c;用官方给的命令&#xff1a; npm uninstall vue-cli -g 发现不行。 1、究其原因&#xff1a;从vue-cli 3.0版本开始原来的npm install -g vue-cli 安装的都是旧版&#xff0c;最高到2.9.6。安…

基于Netty实现的简单聊天服务组件

目录 基于Netty实现的简单聊天服务组件效果展示技术选型&#xff1a;功能分析聊天服务基础设施配置&#xff08;基于Netty&#xff09;定义组件基础的配置&#xff08;ChatProperties&#xff09;定义聊天服务类&#xff08;ChatServer&#xff09;定义聊天服务配置初始化类&am…

后端接口错误总结

今天后端错误总结&#xff1a; 1.ConditionalOnExpression(“${spring.kafka.exclusive-group.enable:false}”) 这个标签负责加载Bean&#xff0c;因此这个位置必须打开&#xff0c;如果这个标签不打开就会报错 问题解决&#xff1a;这里的配置在application.yml文件中 kaf…