c++一些使用频率较高的库函数

目录

memset()

memset()接受三个参数:

注意

swap()

reverse()

reverse函数接收两个参数:

reverse()反转整形向量元素顺序示例

unique()

接收两个参数

代码例子-相邻


memset()

memset()是一个用于设置内存块值的函数。它的原型定义在<cstring>头文件中,函数的声明如下:

void* memset(void* ptr,int value,size_t num);//指针 值 重置的大小

memset()接受三个参数:

1.ptr:指向要设置值的内存块的指针

2.value:要设置的值,通常是一个整数(八位二进制数)

3.num:要设置的字节 Byte = 8bit

memset()函数将ptr指向的前num个字节设置为value值。它返回一个指向ptr的指针。

memset()函数通常用于初始化内存块,将其设置为特定的值。

例如如果将一个整形数组的所有元素设置为0,可以使用memset()函数如下:

int arr[10];memset(arr,0,sizeof(arr));

注意

memset()函数对于非字符型的数组可能会产生未定义的行为。

                char-8bit-1Byte

                int-32bit-4Byte

在处理非字符型的数组时,更好使用c++中的其他方法,如循环遍历来初始化数组,memset会将每个Byte设置为value。

swap()

swap(T&a,T&b)函数接收两个参数:

1.a:要交换值的第一个变量的引用。

2.b:要交换值的第二个变量的引用。

swap()函数通过将第一个变量的值存储到临时变量中,然后将第二个变量的值赋给第一个变量,最后将临时变量的值赋给第二个变量,实现两个变量值的交换。

swap()函数可以用于交换任意类型的的变量,包括基本类型(如整数、浮点数等)和自定义类型(如结构体、类对象等)。

reverse()

reverse()是一个用于反转容器中元素顺序的函数。

它的原型定义在<algorithm>头文件中,函数声明如下:

template<class BidirIt>

void reverse(BidirIt first,BidirIt last);

reverse函数接收两个参数:

1.first:指向容器中要反转的第一个元素的迭代器

2.last:指向容器中要反转的最后一个元素的下一个位置的迭代器。

reverse()函数将[firsrt,last)范围内的元素按相反的顺序重新排序。

reverse()函数可用于反转各种类型的容器,包括数组、向量、链表等。

reverse()反转整形向量元素顺序示例

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{vector<int>vec = { 1,2,3,4,5 };reverse(vec.begin(), vec.end());for (int num : vec){cout << num << ' ';}system("pause");return 0;
}

结果:5 4 3 2 1

需要注意的是:reverse()函数只能用于支持双向迭代器的容器,因为它需要能够向前和向后遍历容器中的元素。对于只支持单向迭代器的容器(如前向链表),无法使用reverse()函数进行反转。

unique()

unique()是一个用于去除容器中相邻重复元素的函数。原型定义在<algorithm>

接收两个参数

1、first指向容器中要去重的第一个元素的迭代器

2、last指向容器中要去重的最后一个元素的下一个位置的迭代器

因为只能去除相邻相同的元素,所以去重前要先排序

代码例子-相邻

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{int a[] = { 3,1,1,2,2,3 };sort(a,a+5);int n = unique(a, a + 5) - a;for (int i = 0;i<n;i++){cout << a[i] << ' ';}system("pause");return 0;
}

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

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

相关文章

Qt QSpinBox微调框控件

文章目录 1 属性和方法1.1 值1.2 步长1.3 循环1.4 加速1.5 前缀和后缀1.6 信号和槽 2 实例2.1 布局2.2 代码实现 微调框&#xff0c;允许用户按照一定的步长&#xff0c;来增加或减少其中显示的数值 修改微调框数值的方式包括&#xff1a; 单击右侧的向上/向下按钮按键盘的向上…

LINUX——动/静态库

加油加油~ 目录&#xff1a; 动/静态库是什么&#xff1f; .o文件是什么&#xff1f; 以gcc编译器为例&#xff0c;查看xxx.i xxx.s xxx.o文件 生成test.i文件(预处理) 生成test.s文件(编译) 生成test.o文件(汇编) 生成可执行程序(链接)&#xff1a; 小结&#xff1a…

uniapp的H5如何实现全局组件加载,类似uni.showToast?

在项目components文件夹新建一个base-loading文件夹&#xff0c;文件包括两个文件 第一个文件base-loading.vue <template><u-overlay :show"visible" opacity"0.5"><view class"base-loading" v-show"visible">&…

Git 基础指令

Git 基础指令 本章涵盖了我们在使用 Git 完成各种操作时将会用到的各种基本命令。 在学习完本章之后&#xff0c;我们应该能够配置并初始化一个仓库&#xff08;repository&#xff09;、开始或停止跟踪&#xff08;track&#xff09;文件、暂存&#xff08;stage&#xff09;…

【开题报告】基于SpringBoot的运动会报名管理系统的设计与实现

1.选题背景 运动会是学校、社区或组织中重要的体育活动之一&#xff0c;它不仅能够促进身体健康&#xff0c;还能够培养团队合作精神和竞争意识。然而&#xff0c;传统的报名管理方式通常繁琐而复杂&#xff0c;容易出现信息丢失或错误&#xff0c;给组织者和参与者带来不便。…

模拟数字转换器

本节主要介绍以下内容&#xff1a; ADC简介 ADC功能框图详解 参考资料:《零死角玩转STM32》“ADC—电压采集”章节 一、ADC简介 ADC &#xff1a;Analog to Digital&#xff0c;模拟数字转换器 三个独立的ADC 1 / 2 / 3分辨率为12位每个ADC具有18个通道&#xff0c;其中…

代码随想录刷题笔记(DAY 10)

今日总结&#xff1a;快要期末考试了&#xff0c;现在在疯狂速成&#xff0c;今天稍微缓和了一点&#xff0c;应该能保证继续每天刷题&#xff0c;欠下的那些寒假补上。 Day 10 01. 用栈实现队列&#xff08;No. 232&#xff09; 题目链接 代码随想录题解 1.1 题目 请你仅…

AcWing1210-连号区间

文章目录 题目输入格式输出格式数据范围样例输入样例1输出样例1输入样例2输出样例2样例解释 思路代码 题目 输入格式 输出格式 数据范围 样例 输入样例1 4 3 2 4 1 输出样例1 7 输入样例2 5 3 4 2 5 1 输出样例2 9 样例解释 思路 固定L&#xff0c;遍历R在[L,R]区域中找到最大…

参数小,性能强!开源多模态模型—TinyGPT-V

安徽工程大学、南洋理工大学和理海大学的研究人员开源了多模态大模型——TinyGPT-V。 TinyGPT-V以微软开源的Phi-2作为基础大语言模型&#xff0c;同时使用了视觉模型EVA实现多模态能力。尽管TinyGPT-V只有28亿参数&#xff0c;但其性能可以媲美上百亿参数的模型。 此外&…

仿蓝奏云网盘 /file/list SQL注入漏洞复现

0x01 产品简介 仿蓝奏网盘是一种类似于百度网盘的文件存储和共享解决方案。它为用户提供了一个便捷的平台,可以上传、存储和分享各种类型的文件,方便用户在不同设备之间进行文件传输和访问。 0x02 漏洞概述 仿蓝奏云网盘 /file/list接口处存在SQL注入漏洞,登录后台的攻击…

Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent

文章目录 Pre概述Code源码分析 Pre Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent 概述 Spring Boot 的广播机制是基于观察者模式实现的&#xff0c;它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦&#…

RabbitMQ入门到实战——高级篇

消息的可靠性 生产者的可靠性&#xff08;确保消息一定到达MQ&#xff09; 生产者重连 这⾥除了enabled是false外&#xff0c;其他 initial-interval 等默认都是⼀样的值。 生产者确认 生产者确认代码实现 application中增加配置&#xff1a;&#xff08;publisher-returns…

《MySQL系列-InnoDB引擎06》MySQL锁介绍

文章目录 第六章 锁1 什么是锁2 lock与latch3 InnoDB存储引擎中的锁3.1 锁的类型3.2 一致性非锁定读3.3 一致性锁定读3.4 自增长与锁3.5 外键和锁 4 锁的算法4.1 行锁的三种算法4.2 解决Phantom Problem 5 锁问题5.1 脏读5.2 不可重复读5.3 丢失更新 6 阻塞7 死锁 第六章 锁 开…

深度解析Cron表达式:精确控制任务调度的艺术

深度解析Cron表达式&#xff1a;精确控制任务调度的艺术 希望我们都可以满怀期待的路过每一个转角 去遇见 那个属于自己故事的开始 去追寻那个最真实的自己 去放下 去拿起 安然&#xff0c;自得&#xff0c;不受世俗牵绊… 导言 在计算机科学领域&#xff0c;任务调度是一项关…

openssl3.2 - 官方dmeo学习 - server-cmod.c

文章目录 openssl3.2 - 官方dmeo学习 - server-cmod.c概述配置文件格式样例笔记END openssl3.2 - 官方dmeo学习 - server-cmod.c 概述 从配置文件中读参数, 建立TLS服务器, 死等客户端来连接. 客户端连接后, 打印客户端发来的内容. 配置文件格式有要求 配置文件格式样例 # …

MySQL 8.0中新增的功能(十)

XA语句的复制过滤 以前&#xff0c;在使用--replicate-do-db或--replicate-ignore-db时&#xff0c;无论binlog_format的值如何&#xff0c;XA START、XA END、XA COMMIT和XA ROLLBACK语句都会由默认数据库进行过滤&#xff0c;这可能会导致事务被忽略。从MySQL 8.0.31开始&am…

【PyQt5设计】:自动点击神器 - 解决重复性的点击和输入操作

文章目录 自动点击神器介绍测试窗口介绍自动点击神器的使用教程资源领取注意事项 自动点击神器介绍 本次使用PyQt5设计的【自动点击神器】旨在解决重复性的点击工作&#xff0c;解放双手&#xff0c;具有及时性和准确性&#xff0c;可选择坐标位置或图片两种方式实现鼠标的定位…

CMake入门教程【高级篇】编译器优化级别

文章目录 1. 什么是编译器优化级别?2. 如何在CMake中设置编译器优化级别?3. 如何跨平台设置编译器优化级别?4. 如何根据构建类型设置编译器优化级别?结论1. 什么是编译器优化级别? 编译器优化级别是编译器在编译代码时,对代码进行优化的程度。优化级别可以影响代码的执行…

uniapp如何分包加载

在uni-app中&#xff0c;可以通过配置manifest.json文件来实现分包加载。以下是具体操作步骤&#xff1a; 在项目根目录下找到并打开manifest.json文件。在"uni-app"节点中&#xff0c;找到并修改"subPackages"节点&#xff0c;添加需要分包的页面路径。 …

Python(35):Python3 通过https上传文件和下载文件

Python(35):Python3 通过https上传文件和下载文件 Python http方式的下载,参考:https://blog.csdn.net/fen_fen/article/details/113753983 https需要先安装需要的模块 1、上传示例 1.1、调用: upload_strategy(access_token,"123456789") 1.2、上传代码 g…