【考研复试上机】C++STL

文章目录

  • vector
    • 初始化及赋值方式
    • vector容器内元素的访问
    • 常用函数
  • set
    • set容器内元素的访问:
    • set常用函数:
    • multiset
    • unordered_set
  • string
    • string常用函数:
  • map
    • map容器内元素的访问:
    • map常用函数:
    • multimap
    • unordered_map
  • queue
    • queue容器内元素的访问:
    • queue常用函数:
  • priority_queue【实质是大根堆/小根堆】
    • 定义:
    • priority_queue容器内元素的访问:
    • priority_queue常用函数:
    • priority_queue优先级的设置:
  • deque
    • 常用函数:
  • stack
    • stack容器内元素的访问:
    • stack常用函数:
  • pair
    • 定义
    • 在代码中临时构建pair
    • 元素访问
  • algorithm头文件下的常用函数

vector

初始化及赋值方式

//初始化一个size为0的vector
vector<int> vi;//初始化size,但每个元素值为默认值
vector<int> vi(10);    //初始化了10个默认值为0的元素//初始化size,并且设置初始值
vector<int> vi(10,1);    //初始化了10个值为1的元素int a[5] = {1,2,3,4,5};
//通过数组a的地址初始化,注意地址是从0到5(左闭右开区间)
vector<int> vi(a, a+5);//Make a vector and copy the elements from begin to end.vector<int> vi(5,1);
//通过vi初始化
vector<int> vj(vi);//insert初始化方式将同类型的迭代器对应的始末区间(左闭右开区间)内的值插入到vector中
vector<int> a(6,6);
vecot<int> b;
//将a[0]~a[2]插入到b中,b.size()由0变为3
b.insert(b.begin(), a.begin(), a.begin() + 3);// 初始化一个 二维的matrix, 行M,列N,且值为0
vector<vector<int>> matrix(M,vector<int>(N,0));

vector容器内元素的访问

  • 通过下标访问:vi[i]

    • vector在还没有分配任何空间时还不能像数组一样用下标形式去访问vector的(v[0]也不行)!!!否则编译通过但报运行错误runtime error!

    • vector<int> res(size);//如此进行指定空间大小
      
  • 通过迭代器访问

    • vector<int>::iterater it = vi.begin();//返回开始点的迭代器vi.end();//返回最后一个元素的下一个位置的迭代器
      
  • 返回第一个或最后一个元素的

    • vi.front();//返回第一个元素vi.back();//返回最后一个元素
      

常用函数

  • vector在最后添加元素
vi.push_back(val)
  • vector通过迭代器在指定位置插入元素
vi.insert(vi.begin()+i,val); //在vi数组的第i个位置插入值为val的元素【会导致vi的长度加1】 
  • vector删除最后的元素
vi.pop_back()
  • 通过find函数来查找某一个值对应的迭代器
vector<int>::iterator it = find(arr.begin(), arr.end(), val);if(it!=arr.end()) return true; //当查找失败时,返回的时arr.end()
  • 获得vector中元素的个数
len = vi.size()
  • 清空vector中所有的元素
vi.clear()
  • vector内的元素逆置
vector<int> vi ={1,2,3,4,5,6};
reverse(vi.begin(),vi.end());  //vi反转后为6,5,4,3,2,1
  • vector容器的swap方法
v1.swap(v2)
  • vector容器中找到最大元素的位置
maxPosition = max_element(vi.begin(), vi.end());
  • vector删除指定元素的方法
vi.erase(it);
  • 对vector内元素进行去重的方法
// 使用 set 进行去重
set<int> st(vi.begin(), vi.end());
vector<int> viNew(st.begin(), st.end());
  • 通过迭代器的位置返回值来获取数组位置下标的方法
//distance,它返回的是两个迭代器之间的距离。//使用这个函数,就能完成迭代器与下标之间的转换:下标 = 当前迭代器位置-容器头部//注:在使用过程中,可以结合begin()和返回的迭代值进行求下标的计算。vector<int>::iterator first = vi.begin();
vector<int>::iterator it = find(arr.begin(), arr.end(), val);
distance(first,it)

set

  • set内的元素递增排序
  • 自动去重
  • 内部用红黑树实现

set容器内元素的访问:

  • 访问第一个值【最小值】:*st.begin()

  • 访问最后一个值【最大值】:*st.rbegin()

//只能通过枚举的方式访问
for(set<int>::iterator it = st.begin();it!=st.end();it++){cout<<*it<<endl;
}

set常用函数:

  • 将x元素插入set中
st.insert(x)
  • 在set中查找value,并返回其迭代器
set<int>::iterator it = st.find(value);
cout<<*it<<endl;cout<<*(st.find(value));
  • 在set中删除元素
st.erase(it): //删除迭代器为it处的元素 
st.erase(value);//删除set中值为value的元素
st.erase[first,last);//删除[first,last)内所有的元素
  • 获得st中元素的个数
st.size();
  • 清空set中所有的元素
st.clear();

multiset

  • 能时刻保证序列中的数是有序的,而且序列中可以存在重复的数
multiset<int> mst;

unordered_set

  • 只去重,不排序
  • 速度比set快很多
unordered_set<int> ust;

string

string常用函数:

  • str=str1+str2; //直接拼接
  • ==、!=、>= //直接比较
  • str.length()、str.size() // 返回string的长度
  • str.insert(pos,string); //在pos号位置,插入字符串string
  • str.clear();
  • str.substr(pos,len); //返回从pos位开始,长度为len的子串
  • str.find(str2);//返回str2在str中第一次出现的位置,如果不是其子串,返回string::npos
    • string::npos:是一个常数,其本身的值为-1,用来作为find函数失配时的返回值
  • str.replace(pos,len,str2);// 把str从pos号位开始,长度为len的子串替换为str2

map

  • map中的键是唯一的
  • map会以键从小到大的顺序自动排序
  • 内部由红黑树实现

map容器内元素的访问:

  • 通过下标访问:mp['c']

  • 通过迭代器访问:

    • map<typename1,typename2>::iterater it;
      it->first;//访问键
      it->second;//访问值
      

map常用函数:

  • 返回为key的迭代器it
map<char,int>::iterator it = mp.find(key);
  • 判断map的键是否已经存在了
mp.count(key)//返回值是一个整数,1表示有这个元素,0表示没有这个元素。
  • 查找容器中的元素的个数
mp.size();
  • mp.clear();

  • mapvalue进行排序的方法

//先把map装进pair里,然后再放入vector,自定义sort实现排序
vector<pair<int,int>> vi;sort(vi.begin(),vi.end(),[](pair<int,int> p1,pair<int,int> p2){return p1.second>p2.second;
})

multimap

  • 一个键可以对应多个值

unordered_map

  • 只映射,而不按key排序
  • 速度比map快很多

queue

  • 使用pop()front()函数前,需要用empty()函数判断队列是否为空

queue容器内元素的访问:

q.front();//访问队首元素q.back();//访问队尾元素

queue常用函数:

  • q.push(x):将x入队
  • q.pop():将队首元素出队
  • q.empty():检测queue是否为空
  • q.size():返回queue内元素的个数

priority_queue【实质是大根堆/小根堆】

  • 来实现
  • 队首元素是当前队列中优先级最高的元素

定义:

priority_queue<typename> name;

priority_queue容器内元素的访问:

q.top();//只能访问队首元素,相当于访问堆顶元素

priority_queue常用函数:

  • q.push(x):将x入队
  • q.pop():将队首元素出队
  • q.empty():检测优先队列是否为空
  • q.size():返回优先队列内元素的个数

priority_queue优先级的设置:

priority_queue<int, vector<int>, less<int> > a; //less:减小,从大到小,是大根堆【默认】   priority_queue<int, vector<int>, greater<int> > s; //greater:增大,从小到大,是小根堆//vector<int>(也就是第二个参数)填写的是来承载底层数据结构堆(heap)的容器,如果第一个参数是 double 型或 char 型,则此处只需要填写 vector<double> 或 vector<char>;

deque

常用函数:

  • 在队列尾部添加元素
dq.bush_back()
  • 在队列头部添加元素
dq.push_front()
  • 删除队列尾部的元素
dq.pop_back()
  • 删除队列头部的元素
dq.pop_front()
  • 获得头部元素
dq.front()
  • 获得队列尾部元素
dq.back()

stack

stack容器内元素的访问:

st.top();//只能访问栈顶元素易错点!在使用st.top()之前,要先判空:st.empty();

stack常用函数:

  • st.push(x):将x入栈
  • st.pop():将栈顶元素弹出
  • st.empty():检测栈是否为空
  • st.size():返回栈内元素的个数

pair

  • 可以直接用==、!=、<等运算符比较,比较规则:先以first的大小作为标准,当first相等时,再去判别second
  • 代替二元结构体机器构造函数,节省编码时间
  • 作为map的键值对来进行插入:mp.insert(make_pair("haha",3));

定义

pair<typename1,typename2> name;

在代码中临时构建pair

pair<string,int > ("haha",5);
make_pair("haha",5);

元素访问

pair<int ,int > p;
p.first;
p.second;

algorithm头文件下的常用函数

  • fabs(double x):double型变量取绝对值

  • floor(double x):double型变量向下取整

  • ceil(double x):double型变量向上取整

  • pow(double r, double p) :返回 r p r^p rp

  • sqrt(double x):返回double型变量的算术平方根

  • round(double x):将double型变量四舍五入

  • max(x,y)

  • swap(x,y):交换x、y的值

  • reverse(arr,arr+n):将此范围内的元素进行反转

  • next_permutation():给出一个序列在全排列中的下一个序列

    int a[10]={1,2,3};
    do{cout<<a[0]<<a[1]<<a[2]<<endl;
    }while(next_permutation(a,a+3));
    
  • fill(arr,arr+n,x):用于对数组赋予其他的数字

  • memset(arr,0,sizeof(arr)):只能用于赋值0或-1

10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 21

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

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

相关文章

颜色识别

颜色识别 计算机视觉中的颜色识别是指计算机系统能够自动识别图像或视频中的不同颜色&#xff0c;以便进行分析、分类、跟踪和其他视觉任务。 颜色是物体的一个重要属性&#xff0c;它提供了有关对象的重要信息。 颜色识别在各种应用中都有重要作用&#xff0c;包括工业自动…

分布式文件系统

引言&#xff1a; GFS是一个可扩展的分布式文件系统&#xff0c;用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上&#xff0c;并提供容错功能。它可以给大量的用户提供总体性能较高的服务。 一、 GlusterFS 概述 1.1 GlusterFS简介 GlusterFS 是…

跳动的♥心

代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style…

git实现代码版本控制

一、在github新建一个仓库 二、在本地执行以下代码 git init git add . git commit -m "first commit" git branch -M main git remote add origin gitgithub.com:thekingofjumpshoot/blog.git git push -u origin main 代码解析 然后就上传到github上了 三、第二…

Java 8 中Stream流的基本概念和用法介绍

1. 理解Java 8中Stream流的概念 Java 8中引入的Stream流是对集合对象进行各种操作的高级抽象&#xff0c;可以让开发者更加便捷、高效地处理数据。在本章节中&#xff0c;我们将深入探讨Java 8中Stream流的基本概念&#xff0c;包括Stream流的定义、与集合的关系以及使用Strea…

qt实现实时抓取串口数据,并对数据做解密处理

效果&#xff1a; 1.实时抓取串口数据&#xff0c;并对串口数据做解密&#xff0c;解密后显示在QTextEdit上。 2.对显示的内容做特殊关键字标记处理&#xff0c;比如对出现的Error关键字标红 高亮另一个版本 3.对显示的明文进行查询&#xff0c;类似编辑文件中的CtrlF 4.对串口…

Mac环境简化RSA密钥生成命令

文章目录 正常RSA密钥对生成操作命令 openssl genrsa -out rsa_private_key.pem 2048 openssl rsa -pubout -in rsa_private_key.pem -out rsa_public_key.pem通过添加环境变量来简化RSA密钥对生成操作 设置环境变量.zshrc或.bash_profile # 使用zsh终端 vim ~/.zshrc将下面sh…

如何通过代码混淆绕过苹果机审,解决APP被拒问题

目录 iOS代码混淆 功能分析 实现流程 类名修改 方法名修改 生成垃圾代码 替换png等静态资源MD5 info.plist文件添加垃圾字段 功能分析 实现流程 类名修改 方法名修改 生成垃圾代码 替换png等静态资源MD5 info.plist文件添加垃圾字段 混淆前后对比 iOS代码混淆 …

南京航空航天大学-考研科目-513测试技术综合 高分整理内容资料-01-单片机原理及应用分层教程-单片机有关常识部分

系列文章目录 高分整理内容资料-01-单片机原理及应用分层教程-单片机有关常识部分 文章目录 系列文章目录前言总结 前言 单片机的基础内容繁杂&#xff0c;有很多同学基础不是很好&#xff0c;对一些细节也没有很好的把握。非常推荐大家去学习一下b站上的哈工大 单片机原理及…

开通抖音小店后下一步要干嘛?这些准备比选品更重要!新手必看!

哈喽~我是电商月月 很多入驻完抖音小店的新手朋友总以为&#xff0c;入驻完抖音小店后&#xff0c;下一步就是去选品 其实并不是&#xff01;选品确实很重要&#xff0c;但前期这几个细节没做好&#xff0c;是会直接影响店铺的整体发展的 废话不多说&#xff0c;直接分享给你…

2024年6月PMP报名已开始!项目经理抓紧啦!

根据《2024年6月1日PMI认证考试报名通知》可知&#xff0c;2024年6月PMP考试安排在6月1日举行&#xff0c;那报名入口什么时候开通呢&#xff1f;2024年6月PMP考试分批报名&#xff0c;从4月10日10:00开启报名&#xff0c;4月18日16:00截止报名。 第一批报名城市&#xff1a;2…

Linux入门攻坚——18、SELinux、Bash脚本编程续

SELinux——Secure Enhanced Linux&#xff08;安全加强的Linux&#xff09;&#xff0c;工作于Linux内核中。 SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源&#xff08;最小权限原则&#xff09;。采用委任式存取控制&#xff0c;是在进行程序、文件等细节权…

Dockfile相关

一、Dockerfile能干什么? 能在里面自定义应用的各种环境配置,来构建镜像;它是一种实现途径。 1.1Dockerfile文件组成 1.基础镜像信息 FROM 2.维护者信息 LABEL 3.镜像操作指令 ENV ADD COPY RUN 4.启动时执行指令 CMD ENTRYPOINT 1.2Dockerfile多阶段构建 一个镜像的构…

python批量修改替换cad图纸文本,土木狗可以有

civilpy&#xff1a;python进行AutoCAD绘图的两个库&#xff0c;土木狗可以有3 赞同 0 评论文章​编辑 civilpy&#xff1a;python进行AutoCAD绘图批量打印&#xff0c;土木狗可以有2 赞同 2 评论文章​编辑 # 导入所需库 from pyautocad import Autocad, APoint import ma…

LeetCode 94 二叉树的中序遍历

题目描述 二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入…

hive管理之ctl方式

hive管理之ctl方式 hivehive --service clictl命令行的命令 #清屏 Ctrl L #或者 &#xff01; clear #查看数据仓库中的表 show tabls; #查看数据仓库中的内置函数 show functions;#查看表的结构 desc表名 #查看hdfs上的文件 dfs -ls 目录 #执行操作系统的命令 &#xff01;命令…

WinAppDriver 自动化测试winform程序

WinAppDriver 自动化测试winform程序 前言 WinAppDriver是Windows系统上的一个应用程序驱动工具&#xff0c;开源免费。与Selenium工具类似&#xff0c;都是用来实现产品UI自动化测试的一个工具。 WinAppDriver运行时对系统是有要求的&#xff0c;只能运行在Windows10或Wind…

2024/4/6—力扣—简化路径

代码实现&#xff1a; // 分割/得到名字 char **split(const char *s, int *returnSize) {int n strlen(s);char **ans (char **)malloc(sizeof(char *) * n);int l 0, r 0, len 0;while (r < n) {while (r < n && s[r] /) {r;}l r;while (r < n &…

Python | 海表面温度(SST) | 长期趋势和异常分析

趋势和异常分析&#xff08;Trend and anomaly)在大气和海洋学研究中被广泛用于探测长期变化。 趋势分析&#xff08;Trend Analysis&#xff09;&#xff1a; 趋势分析是一种用于检测数据随时间的变化趋势的方法。在海洋学和大气学中&#xff0c;常见的趋势分析包括海表面温…

WeTrade众汇账户类型有哪几种?FX110网

WeTrade众汇是一个在线交易平台&#xff0c;允许用户买卖各种金融工具&#xff0c;包括交易外汇、金属、能源、指数、股票和加密货币。 WeTrade众汇不仅提供多种交易市场&#xff0c;还提供多种有竞争力的工具和服务。那么&#xff0c;WeTrade众汇账户类型有哪几种&#xff1f;…