C++语言STL库常用函数

2023-05-16

目录

目录

万能头文件

include

1、memset()批量初始化函数

2、next/prev_permutation全排列函数

 3、unique去重函数

 4、reverse()函数

5、fill()函数

6、lower_bound(begin,end,num)函数

7、求绝对值,abs()和 fabs()函数

 8、求幂函数,pow和sqrt

9、swap(a,b)交换函数​​​​​​​


万能头文件

include<bits/stdc++.h>

1、memset()批量初始化函数

        1.原型:void *memset(集合,初始内容,大小)。

        2.初始化可以为两种内容:整型0和-1,字符ASCLL

        3.应用场景

                        * 需要数组初始值为0和-1。

                        * 需要字符串数组初始化多个相同的值。

                

初始化数组0和-1(只能这两个值)

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[10];
	int b[10];
	int c[10];
	memset(a,-1,sizeof(a));
	//-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
	memset(b,0,sizeof(b));
	// 0 0 0 0 0 0 0 0 0 0
	memset(c,1,sizeof(c));//虽然不报错,但初始化的内容不是我们想要的内容 
	//16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
	for(int i=0;i<10;i++)
	{
		printf("%d ",b[i]); 
	}
	return 0;
 } 

初始化为字符

#include<bits/stdc++.h>
using namespace std;
int main()
{

	char a[10];
	char b[10];
	memset(a,'a',sizeof(a));
	memset(b,'bbbbb',sizeof(b));//虽然给到多个字符,但不报错,且有效的也只有一个 
	for(int i=0;i<10;i++)
	{
		printf("%c ",a[i]); 
	}
	return 0;
 } 

2、next/prev_permutation全排列函数

        1.next_permutation(数组名,数组名+范围):将范围内的排序替换成更大的排序
        2.prev_permutation(数组名,数组名+范围) : 将范围内的排序替换成更小的排序

        3.返回值为bool型,如果在当前排序序列下能找到比当前更“大”的排序返回true
             如果到达最大排序,下一步重复时,返回false 

        4.应用场景:涉及到排列问题。

     

#include<iostream>
#include<algorithm>
using namespace std;
int a[3]={1,2,3};
//next_permutation(数组名,数组名+范围):将范围内的排序替换成更大的排序
//prev_permutation(数组名,数组名+范围) : 将范围内的排序替换成更小的排序
int main()
{
	//三位数,123,全排列顺序。 
	//1 2 3   1 3 2   2 1 3   2 3 1   3 1 2   3 2 1
	for(int i=0;i<12;i++)
	{
		printf("%d %d %d   ",a[0],a[1],a[2]);
		//如果能找到比当前更“大”的排序返回true
		//如果到达最大排序,下一步重复时,返回false 
		//prev_permutation同理,则相反。 
		if(!next_permutation(a,a+3))
		{
			printf("到达最大的排序!下步进行循环\n"); 
		};
	}
	return 0;	
 }

 3、unique去重函数

           1. 只能除去连续重复或者字符, 不能用于构造唯一性数组。
           2.原数组不会缩小,要求得有效数组段,进行输出 。

       例如:1,1,3,4,1,5,5,5 去重得到序列为:1,3,4,1,5(还有三位随机数,进行忽略)

           3.应用场景:需要去掉连续重复的数字或者字符的数组。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[13]={10,10,10,4,2,4,3,3,4,1,1,4,1};
	char b[10] = {'a','a','b','c','v','a','a','b','c','v'};
	int n = unique(b,b+13)-b;//求得去重后,剩余的个数 
	//全部输出:
	for(int i=0;i<10;i++)
	cout<<b[i]<<" ";//结果为: 10 4 2 4 3 4 1 4 1 1 1 4 1
	cout<<endl;
	for(int i=0;i<10;i++)
	cout<<b[i]<<" ";//结果为: 10 4 2 4 3 4 1 4 1 1 1 4 1
	cout<<endl;
	//限定输出: 
	for(int i=0;i<n;i++)
	cout<<b[i]<<" ";//结果为: 10 4 2 4 3 4 1 4 1 ,,, a b c v a b c v
	
	//unique()方法使用总结:
		//1--只能除去连续重复的数, 不能用于构造唯一性数组
		//2--原数组不会缩小,要求得有效数组段,进行输出 
	return 0;
} 

 4、reverse()函数

reverse(it, it+a)可以将数组指针在[it, it+a)之间的元素或容器的迭代器在[it, it2)范围内的元素进行反转
a=需要反转数的个数
代码:

整型数反转:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[10]={0,1,2,3,4,5,6,7,8,9};
     reverse(a,a+10);
     for(int i=0;i<10;i++)
     printf("%d ",a[i]);
	return 0;
} 

 结果:

 字符串反转:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	char a[10]={"abcdefghi"};
     reverse(a,a+9);
     puts(a);
	return 0;
} 

结果:

5、fill()函数

fill(it,it+n,a)可以把数组容器中的某一段区间赋为某个相同的值。和memset不同,这里的赋值可以是数组类型对应范围中的任意值
n==赋值的个数

n==赋值的内容
代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[5]={1,5,6,7,3};
	char b[10];
    //字符型
	fill(b,b+10,'q'); 
    //整形
     fill(a,a+5,999);//将a[0]~a[4]赋值3为999 
     for(int i=0;i<5;i++)
     printf("%d ",a[i]);
     cout<<endl;
     cout<<b;
	return 0;
} 

结果:

注意: 

6、lower_bound(begin,end,num)函数

使用条件:排好序
从数组的begin位置到end-1位置二分查找第一个大于等于num的数组,找到返回该数组地址,不存在则返回end。通过返回的地址减去起始地址begin,得到数字在数组中的下标
代码:​​​​​​​

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int x;//下标
	int key; 
	int a[5]; 
	for(int i=0;i<5;i++)
	cin>>a[i];
	cin>>key;//需要查找的元素 
	sort(a,a+5);
	for(int i=0;i<5;i++)
	cout<<a[i]<<" ";
	cout<<endl;
     x=lower_bound(a,a+5,key)-a;//loower_bound返回的匹配数据的地址,通过减去数组名(首地址)得到下标大小 
     for(int i=0;i<5;i++)
     cout<<a[i]<<" ";
     cout<<endl;
     printf("%d ",x);
	return 0;
} 

结果:

7、求绝对值,abs()和 fabs()函数

abs()用于整型求绝对值,fabs()用于浮点型

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int a=-199;
	float b=-1.6;
	cout<<abs(a)<<" "<<fabs(a)<<endl;//测试结果为; 199 199,结论:整型用abs和fabs都可以 
	cout<<fabs(b)<<" "<<abs(b)<<endl;//测试结果为; 1.6 1 , 结论:浮点型用abs求绝对值会向下取整 
	return 0;
 } 

 结果:

 8、求幂函数,pow和sqrt

doule pow(base,exp):函数返回以参数baseexp 次幂。如果base为零或负和exp 小于等于零或非整数时,产生域错误。如果溢出,产生范围错误。

sqrt(base):函数返回参数num的平方根。如果num为负,产生域错误。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	cout<<pow(2,10)<<endl;
	cout<<sqrt(4)<<endl; 
	return 0;
 } 

结果:

9、swap(a,b)交换函数

swap()函数能将a,b两个参数的值交换(目前没有发现不能交换的类型)

#include<iostream>
#include<algorithm> 
using namespace std;
int main()
{
	int a=10,b=99;
	string st1 = "你好吗?";
	string st2 = "你他妈的!";
	swap(st1,st2);//string类型也可以 
	swap(a,b); 
	cout<<"a = "<<a<<"b=  "<<b;
	cout<<endl<<st1<<endl<<st2;
	return 0;
}

效果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++语言STL库常用函数 的相关文章

  • 模型预测控制(Model predictive control,MPC)

    模型预测控制 MPC 是一种先进的过程控制方法 xff0c 用于在满足一组约束条件的同时控制过程 自 1980 年代以来 xff0c 它一直在化工厂和炼油厂的加工工业中使用 近年来 xff0c 它还被用于电力系统平衡模型 1 和电力电子学中
  • 蓝桥杯单片机官方测试程序现象

    IO模式 xff0c 矩阵按键下 xff1a 开机次数 测试AT24C02 S7 测试LED 按2次 S11 测试DAC 按4次 S15 测试ADC双通道 按2次 S19 测试超声波 S6 测试温度模块 S10 0 测量 S14 测试继电器
  • 51单片机的1T和12T的区别

    1T 模式 不分频 1个系统基本时钟 xff0c 执行一个动作 xff1b 12T模式 12分频 12个系统基本时钟 xff0c 执行一个动作 xff1b 因此 xff0c 12T模式和1T模式执行相同次数的动作 xff0c 12T模式需要
  • python2数据类型

    Python3 数字 Number Python 数字数据类型用于存储数值 数据类型是不允许改变的 这就意味着如果改变数字数据类型得值 xff0c 将重新分配内存空间 以下实例在变量赋值时 Number 对象将被创建 xff1a var1
  • keil中的extern的使用

    C51头文件使用extern的目的是外部变量或函数声明 使用时要注意 1 extern最好写在 h文件中 xff0c 方便后期的可读性 2 在使用extern进行外部变量声明时 xff0c 不能重新给变量赋值 例如 xff1a extern
  • STC89C52RC/RD中定时器2的使用方法

    学过一段时间单片机的你发现 xff0c 中断服务函数可以在主函数进行的同时 xff0c 进行一些对时间要求高的模块的配置时 xff0c 则要用到定时器中断 而如果你要实现多个功能的操作 xff0c 会使用多个定时器是必要的STC89C51单
  • keilC51中调试的方法(主要介绍串口调试XCOM)

    在keilC51中调试的方法的方法有很多 xff1a 1 直接看现象 2 串口调试 3 debug调试 下面终点讲串口调试 xff1a 若要实现printf重定向 重写printf调用的putchar函数 xff0c 重定向到串口输出 需要
  • data/xdata/pdata/code

    dada最大在128byte xff0c 不然就会报错 data xdada最大在512byte xff0c 不然就会报错 xdata pdata stc89c52中未使用 code xff08 将ROM内的定值存在程序存储器中 xff0c
  • 基于PID算法(python)的飞控设计学习日志(一)

    PID算法基础 首先我们需要去了解PID算法的数学原理 xff0c 数学原理部分借鉴于 64 确定有穷自动 机 的博客 一文读懂PID控制算法 xff08 抛弃公式 xff0c 从原理上真正理解PID控制 xff09 总的来说 xff0c
  • JAVA- 浅谈==与equal()的区别

    目录 gt 基础 gt 基本数据类型 gt 引用数据类型 gt Java内存 gt 区别 61 61 和equals gt 61 61 gt equals gt 总结 gt 基础 要想区分这两者 xff0c 我们得先明白什么是基本数据类型和
  • Ubuntu20.04+RealSense D455

    Ubuntu20 04装RealSense D455的驱动 Ubuntu20 04装RealSense D455的驱动 官网链接和个人链接 官网链接和个人链接 前言 xff1a 这些是我ubuntu20 04安装时候所找到的方法 xff0c
  • 【Java开发】 Mybatis-Plus 04:条件构造器-wrapper

    条件构造器算是Mybatis Plus中很重要的知识点了 xff0c 个人觉得它类似于Service的链式查询 xff0c 将诸多条件集中在一个wrapper中 xff0c 以达到高效便捷的目的 本文也是对01 02 03 内容的整合归纳
  • PrusaSlicer2.5中文说明1(新手篇)

    下载PrusaSlicer 稳定版本 PrusaSlicer的最新稳定版本始终可以在DRIVERS amp APPS包中找到 xff0c 它适用于Windows Mac OS X和Linux 该软件包还包括测试对象和打印机驱动程序 xff0
  • ROS机器人开发学习记录2——通过opencv读入本地图像并显示

    使用opencv和ros实现彩色图的读入和显示 为了实现该功能 xff0c 我使用了以下主要函数 xff0c 先对这些函数的功能做简要记录 xff1a xff08 1 xff09 Mat obj 61 imread 本地图像路径 实例 F
  • python中函数的参数分类

    python中函数的参数 形参 xff1a 定义函数时代表函数的形式参数 实参 xff1a 调用函数时传入的实际参数 列如 xff1a def f x y x y形参 print x y f 1 2 1 2 实参 定义函数时 xff0c 形
  • 信号量(sem)控制访问有限共享资源的线程数

    信号量 sem t就是个资源计数器 xff0c 用于控制访问有限共享资源的线程数 span class token macro property span class token directive keyword include span
  • 不需要各种代码的MATLAB语法高亮的设置,简单实用

    文章目录 前言一 代码高亮是什么 xff1f 二 设置步骤1 点击主页再点击预设2 点击MATLAB再点击颜色别着急因为是窗口太小哦所以要放大取消使用系统颜色 xff0c 然后自己选择文本颜色和背景颜色 总结 前言 这次主要想说说MATLA
  • 优先级队列(堆)

    优先级队列 1 什么是优先级队列2 什么时候用它什么时候不用它3 它的具体用法记得import两个库 xff1a 3 1定义3 2输入输出 1 什么是优先级队列 优先级队列就是用库内已有的类 xff0c 这个类名字是队列 xff0c 其实不
  • 2.1 关系模型的基本概念

    文章目录 2 1 1 基本术语定义2 1 用二维表格表示实体集 xff0c 用关键码表示实体间联系的数据模型称为关系模型 xff08 relational Model xff09 在关系模型中 xff0c 关键码 key 简称键 由一个或多
  • 2.2 关系代数的五个基本操作

    文章目录 前言2 2 关系代数2 2 1 关系代数的五个基本操作 1 投影 xff08 Projection xff09 2 选择 xff08 Selection xff09 选择与投影组合 3 xff09 并 xff08 Union xf

随机推荐

  • web的一些介绍

    文章目录 前言一 什么是Web xff1f 二 基本Web服务结构软件编程体系C S xff08 Client Server xff09 软件体系结构B S xff08 Brower Server xff09 软件体系结构C S结构与B S
  • .net技术第一章

    文章目录 NETC C Sharp 的特点C 的应用范围 NET Framework1 2 创建简单的C 程序结构和书写规则类型的声明和使用类型的声明和使用命名空间使用方法命名空间举例 注释Main方法命令行参数Main返回值 控制台输入和
  • .net----委托和事件

    委托和事件 委托声明实例化调用将类型安全的函数指针 方法 作为其他方法的参数进行传递 xff0c 从而实现函数回调方法委托 xff1a 匿名方法委托 多播委托委托 xff1a 委托的异步调用委托 xff1a 委托的兼容性 事件事件实际上是委
  • .net-----语言集成查询LINQ

    语言集成查询LINQ 前言相关语言要素初始值设定项匿名类型相关语言要素Lambda表达式扩展方法 LINQ的概念和基本操作集成语言查询LINQLINQ查询操作 标准查询运算符数据排序数据筛选数据投影数据分组联接运算数据分区限定运算聚合运算集
  • .net-----Windows 窗体应用程序包括控件,对话框,多重窗体,绘制图形,菜单和工具栏

    目录 前言Windows窗体应用程序概述 xff1b 窗体和大部分控件常用的事件创建Windows窗体应用程序使用Visual Studio集成开发环境实现Hello World程序 使用常用Windows窗体控件 xff1b Label
  • python字符串内建函数

    在八进制数前面显示零 0 xff0c 在十六进制前面显示 0x 或者 0X 取决于用的是 x 还是 X 0 显示的数字前面填充 0 而不是默认的空格 输出一个单一的 var 映射变量 字典参数 m n m 是显示的最小总宽度 n 是小数点后
  • 物理层-计算机网络速成

    物理层 1 物理层的基本概念1 1四大特性机械特性电气特性功能特性过程特性 1 2两种信号1 3 调制编码调制编码区别 1 4 传输介质双绞线光纤同轴电缆 xff1a 淘汰 xff0c 有线电话无线 xff1a IEEE802 11 1 5
  • 考研第一天,汤家凤基础班,连续与极限复习笔记

    函数连续极限 性质保号性证明极值点 xff1a 夹逼准则二项式展开根号下 xff0c 大于一 xff0c 小于一的讨论直接放缩求和分子分母齐次 xff0c 且分母大一次 xff0c 用积分 单调有界存在极限几个重要的切线放缩证明有界 xff
  • Ubuntu双系统安装教程

    安装Ubuntu双系统 1 下载Ubuntu镜像源文件2 下载制作U盘启动工具3 磁盘分区4 安装Ubuntu 1 下载Ubuntu镜像源文件 18 04 6链接 xff1a http mirrors aliyun com ubuntu r
  • Arduino造轮子—红外遥控器

    今天练习的程序是实现红外遥控器的控制 xff0c 首先 xff0c 通过太极创客的视频来看看最终的实现结果 xff1a 太极创客 零基础入门学用Arduino 第三部分 智能应用篇 合辑 本次程序例程来自太极创客官网 xff0c 此平台的A
  • 嵌入式软件刷题日记【第一天】

    1 什么是同步IO xff0c 什么是异步IO 同步就是在发出一个功能调用时 xff0c 会一直阻塞等地结果 异步就是在发出一个功能调用时 xff0c 无需阻塞等待结果 xff0c 当结果产生一般通过状态 xff0c 回调等方法来通知调用者
  • 嵌入式软件刷题笔记【第四天】

    1 头文件的两种包含形式的区别 xff1f lt gt 尖括号形式表示引用系统编译器类库路径里面的头文件 34 34 双引号则表示引用当前文件工作目录相对路径里面的头文件 2 STM32 中断是怎么进入到中断服务程序的 xff1f STM3
  • 嵌入式软件刷题【第五天】

    1 在请求分页式存储管理中 xff0c 假设一次内存访问时间为 100ns xff0c 一次快表 xff08 TLB xff09 访问时间为 20ns xff0c 地址转换计算时的快表命中率为 80 xff0c 请计算平均有效内存访问时间为
  • OSlab

    OSlab B站链接 xff1a https www bilibili com video BV1kU4y1m7QW share source 61 copy web Linux环境实践作业 在Windows Terminal的Ubuntu
  • Linux操作命令学习笔记

    Linux操作命令学习笔记 常用操作命令 xff08 以下均严格区分大小写 xff09 查看文件以及文件夹 xff1a ls命令 ls a xff08 显示隐含文件 xff0c 如以 开头的文件 ls l 长格式输出 xff0c 和ll命令
  • JAVA与C、C++比较

    浅比较Java与C C 43 43 1 语言类型 C C 43 43 是Compiled Language xff0c 而Java兼顾了Compiled Language和Interpreted Language的特点 C C 43 43
  • python正则表达式详解

    正则表达式是一个很强大的字符串处理工具 xff0c 几乎任何关于字符串的操作都可以使用正则表达式来完成 xff0c 作为一个爬虫工作者 xff0c 每天和字符串打交道 xff0c 正则表达式更是不可或缺的技能 xff0c 正则表达式的在不同
  • Java架构师发展路线

    Java架构师发展路线 初学者学习路线 Java基础 Java MySQL JDBC JavaWeb 重点 xff1a Servlet Filter Listener Cookie amp Session 常用框架 SSM框架 Spring
  • uml图 类图的表示方式 类图中类的六种关系详解 泛化关系,实现关系,依赖关系,关联关系,聚合关系,组合关系

    类图是UML图中的一种 xff0c 我们先来了解它的定义 xff1a 类图 Class Diagram 使用出现在系统中的不同类来描述系统的静态结构 xff0c 用来描述不同的类以及它们之间的关系 目录 UML类图包含元素 xff1a 单个
  • C++语言STL库常用函数

    目录 目录 万能头文件 include 1 memset xff08 xff09 批量初始化函数 2 next prev permutation全排列函数 3 unique去重函数 4 reverse 函数 5 fill 函数 6 lowe