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,值都为1
	vector<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,第二个元素second
	cout<<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.mfbz.cn/a/175843.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#中的var究竟是强类型还是弱类型?

前言 在C#中&#xff0c;var关键字是用来声明变量类型的&#xff0c;它是C# 3.0推出的新特征&#xff0c;它允许编译器根据初始化表达式推断变量类型&#xff0c;有点跟javascript类似&#xff0c;而javascript中的var是弱类型。它让C#变量声明更加简洁&#xff0c;但也导致了…

优化 Python requests 库文档

在Python的requests库的文档中&#xff0c;缺少了一个指向意大利语翻译的链接。 1&#xff1a;定位文档源代码 首先&#xff0c;我们需要找到Python requests库的文档源代码。 2&#xff1a;克隆仓库并编辑文档** 一旦我们找到了仓库&#xff0c;我们可以将其克隆到本地。然…

重生奇迹mu格斗怎么加点

1.力量加点 力量是格斗家的主要属性之一&#xff0c;它可以增加你的攻击力和物理伤害。因此&#xff0c;对于格斗家来说&#xff0c;力量加点是非常重要的。建议在前期将大部分的加点放在力量上&#xff0c;这样可以让你更快地杀死怪物&#xff0c;提高升级速度。 2.敏捷加点…

下载安装升讯威在线客服系统时提示风险的解决办法

客服系统的服务端程序、客服端程序、配套的配置工具涉及磁盘文件读写、端口监听&#xff0c;特别是经过混淆加密后&#xff0c;可能被部分浏览器或部分杀毒软件提示风险。请忽略并放心使用&#xff0c;如果开发软件是为了植入木马&#xff0c;这个代价可太大了&#xff0c;不如…

npm install安装报错

npm WARN notsup Not compatible with your version of node/npm: v-click-outside-x3.7.1 npm ERR! Error while executing: npm ERR! /usr/bin/git ls-remote -h -t ssh://gitgithub.com/itargaryen/simple-hotkeys.git 解决办法1&#xff1a;&#xff08;没有解决我的问题…

“高校评分”走红网络,虎扑:若造谣抹黑,学校可联系平台处理

哎呀&#xff0c;最近虎扑APP的全国高校评分可是火遍了网络啊&#xff01;那些机智的评语&#xff0c;哦哟&#xff0c;都成了新的“网络爆款梗”&#xff01;有毕业生说嘛&#xff0c;这评分都是看学生自己的经历和感受&#xff0c;有好评当然就有差评啦。但关键是&#xff0c…

【腾讯云云上实验室-向量数据库】腾讯云VectorDB:深度学习场景下的新一代数据存储方案

引言 ​  在深度学习领域的实践中&#xff0c;一般会涉及到向量化处理的数据&#xff0c;如图像、文本、音频等&#xff0c;这些数据的存储和检索对于许多深度学习任务至关重要。传统的关系型数据库和NoSQL数据库在存储和检索这类大规模向量数据时&#xff0c;通常不能满足高…

[数据结构]—栈和队列

&#x1f493;作者简介&#x1f389;&#xff1a;在校大二迷茫大学生 &#x1f496;个人主页&#x1f389;&#xff1a;小李很执着 &#x1f497;系列专栏&#x1f389;&#xff1a;数据结构 每日分享✨&#xff1a;到头来&#xff0c;有意义的并不是结果&#xff0c;而是我们度…

论文笔记:Localizing Cell Towers fromCrowdsourced Measurements (intro 部分)

2015 1 Intro 1.1 motivation opensignal.com 、cellmapper.net 和 opencellid.org 都是提供天线&#xff08;antenna&#xff09;位置的网站 他们提供的天线位置相当准确&#xff0c;但至少在大多数情况下不完全正确这个目标难以实现的原因是蜂窝网络供应商没有义务提供有…

https想访问本地部署的http://localhost接口

情况说明&#xff1a; 网址是https的&#xff0c;想访问java本地启的一个程序接口http://localhost:8089 解决办法 java程序加上

Vue2系列 -- 组件自动化全局注册(require.context)

参考官网&#xff1a;https://v2.cn.vuejs.org/v2/guide/components-registration.html 1 作用 省略 import 引入组件 省略 在main.js 中注册 实现自动化引入组件 2 自定义文件夹 在 src 下新建一个 components/base 文件夹&#xff0c;用于存放要自动注册的组件 3 在 base…

深度学习环境配置(Anaconda+pytorch+pycharm+cuda)

NVIDIA驱动安装 首先查看电脑的显卡版本&#xff0c;步骤为&#xff1a;此电脑右击-->管理-->设备管理器-->显示适配器。就可以看到电脑显卡的版本了。 然后按照电脑信息&#xff0c;到地址 去安装相应的驱动&#xff0c;Notebooks是笔记本的意思&#xff0c;然后下…

python网络通信之基础知识填坑

文章目录 版权声明网络通信要素IP地址ifconfig和ping命令ifconfig (Interface Configuration)ping 端口和端口号的介绍端口号的分类socket介绍TCPTCP简介TCP的特点 UDPUDP简介UDP特点 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#…

如何开发干洗店用的小程序

洗护行业现在都开始往线上的方向发展了&#xff0c;越来越多的干洗店都推出了上门取送服务&#xff0c;那么就需要开发一个干洗店专用的小程序去作为用户和商家的桥梁&#xff0c;这样的小程序该如何开发呢&#xff1f; 一、功能设计&#xff1a;根据干洗店的业务需求和小程序的…

「浙江科聪新品发布」新品发布潜伏顶升式移动机器人专用控制器

聚焦专用车型 最小专用控制器 控制器只占整机5%&#xff0c;纵向出线方式&#xff0c;占比更小 更易插拔 整体解决方案 更具价格优势 提供整体解决方案&#xff0c;配套各类型产品设备及车体厂家 打造持久稳定使用 坚持工业级品质 采用车规级接口&#xff0c;不用其它类不可…

使用内网穿透工具实现远程访问本地部署的Odoo企业管理系统

文章目录 前言1. 下载安装Odoo&#xff1a;2. 实现公网访问Odoo本地系统&#xff1a;3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件&#xff0c;是一个一站式全功能ERP及电商平台。 开源性质&#xff1a;Odoo是一个开源的ERP软件&#xff0c;这意味着企…

mysql开启慢查询日志

直接看原文: 原文链接:MySQL慢查询日志开启、配置、分析等操作_Code0cean的博客-CSDN博客 ------------------------------------------------------------------------------------------------------------------------------- 命令总结: 查看慢查询日志文件 tail -100f …

2014年3月13日 Go生态洞察:并发模式与管道取消技术

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

数学建模之插值法及代码

发现更多知识&#xff0c;欢迎访问Cr不是铬的个人网站 引言 数模比赛中&#xff0c;常常需要根据已知的函数点进行数据、模型的处理和分析&#xff0c;而有时候现有的数据是极少的&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学的方法&#xff0c;“模…

阿里云高校计划学生和教师完成认证领取优惠权益

阿里云高校计划学生和教师均可参与&#xff0c;完成学生认证和教师验证后学生可以免费领取300元无门槛代金券和3折优惠折扣&#xff0c;适用于云服务器等全量公共云产品&#xff0c;订单原价金额封顶5000元/年&#xff0c;阿里云百科aliyunbaike.com分享阿里云高校计划入口及学…
最新文章