【蓝桥】常用库函数
1、memset()函数
1.1 基本介绍
- 定义在头文件
<cstring>中- 主要作用是对一块内存区域进行设置值的操作
1.2 函数原型
void *memset(void *str, int c, size_t n);
str:指向要填充的内存块的指针c:要设置的值。该值以int形式传递,但函数在填充之前会将这个值转换为unsigned charn:要设置的字节数- 返回值:返回指向内存块
str的指针
1.3 常见用法
1.3.1 初始化数组
可以用来快速地将数组元素设置为0或其他相同的值
1.3.2 清空结构体或类对象
当需要重置结构体或类对象时,可以使用
memset()将其所有成员变量设为0
1.3.3 性能优化
对于大量数据的初始化,
memset()因为其底层实现通常是高度优化的,可能比手动循环赋值更快
1.4 基础用法
- 初始化一个整数数组
#include <iostream>
#include <cstring> // 必须包含此头文件int main() {int numbers[5];// 使用 memset 将数组每个元素设置为0// 注意: memset 以字节为单位操作,因此这里每个int(4字节)都被设置为0memset(numbers, 0, sizeof(numbers));// 输出数组内容,验证是否全部被设置为0for(int i = 0; i < 5; ++i) {std::cout << "numbers[" << i << "] = " << numbers[i] << std::endl;}return 0;
}
2、swap()函数
2.1 基本介绍
- 定义在头文件
<utility>中- 主要作用是用于交换两个变量值
2.2 函数原型
void std::swap(T& a, T& b);
a:要交换值的第一个变量的引用b:要交换值的第二个变量的引用
2.3 常见用法
2.3.1 交换两个变量的值
最基本的应用场景
2.3.2 交换容器内容
对于STL容器,除了使用通用的
swap函数外,还可以调用容器自身的swap方法,这通常是更高效的选择
2.3.3 自定义类型
如果需要对自定义类型进行交换操作,可以通过重载
swap函数来提高效率或者实现特定逻辑
2.4 基础用法
2.4.1 基本类型交换
#include <iostream>
#include <utility> // 包含std::swapint main() {int a = 5, b = 10;std::cout << "Before swap: a = " << a << ", b = " << b << std::endl;std::swap(a, b); // 使用std::swap交换a和b的值std::cout << "After swap: a = " << a << ", b = " << b << std::endl;return 0;
}
2.4.2 STL容器交换
#include <iostream>
#include <vector>
#include <utility> // 包含std::swapint main() {std::vector<int> vec1 = {1, 2, 3};std::vector<int> vec2 = {4, 5, 6};std::cout << "Before swap:" << std::endl;std::cout << "vec1 contains:";for(auto& i : vec1) std::cout << ' ' << i;std::cout << "\nvec2 contains:";for(auto& i : vec2) std::cout << ' ' << i;std::cout << std::endl;// 交换vec1和vec2的内容vec1.swap(vec2); // 或者使用std::swap(vec1, vec2);std::cout << "After swap:" << std::endl;std::cout << "vec1 contains:";for(auto& i : vec1) std::cout << ' ' << i;std::cout << "\nvec2 contains:";for(auto& i : vec2) std::cout << ' ' << i;std::cout << std::endl;return 0;
}
3、reverse()函数
3.1 基本介绍
- 定义在头文件
<algorithm>中- 主要作用是用于反转序列容器(如
vector,string,deque,array等)中的元素顺序
3.2 函数原型
void reverse(Iterator first, Iterator last);
first:要反转范围的初始位置last:要反转范围的结束位置(但不包括last所指向的元素)。换句话说,它是半开区间[first, last)中最后一个元素的下一个位置
3.3 常见用法
3.3.1 反转数组或向量
可以用来快速地将一个数组或向量中的元素顺序颠倒
3.3.2 字符串处理
对于
std::string类型的数据,reverse()可以用来反转字符串内容
3.3.3 自定义容器
如果自定义的容器支持双向迭代器,也可以使用
reverse()来反转其中的元素
3.4 基础用法
3.4.1 反转std::vector<int>
#include <iostream>
#include <vector>
#include <algorithm> // 包含reverse函数int main() {std::vector<int> vec = {1, 2, 3, 4, 5};std::cout << "Original vector: ";for(int i : vec) {std::cout << i << ' ';}std::cout << std::endl;std::reverse(vec.begin(), vec.end()); // 使用reverse函数反转vectorstd::cout << "Reversed vector: ";for(int i : vec) {std::cout << i << ' ';}std::cout << std::endl;return 0;
}
3.4.2 反转std::string
#include <iostream>
#include <string>
#include <algorithm> // 包含reverse函数int main() {std::string str = "hello world";std::cout << "Original string: " << str << std::endl;std::reverse(str.begin(), str.end()); // 使用reverse函数反转字符串std::cout << "Reversed string: " << str << std::endl;return 0;
}
4、unique()函数
4.1 基本介绍
- 定义在头文件
<algorithm>中- 主要作用是用于移除给定范围内的连续重复元素,只保留每个重复序列的第一个实例
- 时间复杂度为O(n)
4.2 函数原型
ForwardIt unique(ForwardIt first, ForwardIt last);
ForwardIt unique(ForwardIt first, ForwardIt last, BinaryPredicate p);
first,last:定义了要处理的元素范围。这个范围是半开区间[first, last),意味着包含first指向的元素,但不包括last指向的元素BinaryPredicate p:可选参数,用于自定义比较规则,默认使用operator==
4.3 常见用法
4.3.1 移除连续重复项
这是最直接的应用场景,适用于任何支持双向迭代器的容器(如
vector,deque等)
4.3.2 结合erase使用
为了实际删除容器中多余的元素,通常会将
unique的返回值与erase方法结合使用
4.3.3 自定义比较逻辑
通过提供第三个参数,可以指定不同的比较方式来决定哪些元素被认为是重复的
4.4 基础用法
4.4.1 移除std::vector<int>中的连续重复项
#include <iostream>
#include <vector>
#include <algorithm> // 包含unique和sort函数int main() {std::vector<int> vec = {1, 2, 2, 3, 2, 4, 4, 5};// 首先对vector进行排序,因为unique只能移除相邻的重复项std::sort(vec.begin(), vec.end());// 使用unique移除连续重复项auto last = std::unique(vec.begin(), vec.end());// 删除多余的元素vec.erase(last, vec.end());// 输出结果for(int i : vec) {std::cout << i << " ";}std::cout << std::endl;return 0;
}
4.4.2 使用自定义比较函数
#include <iostream>
#include <vector>
#include <algorithm>bool customCompare(int a, int b) {return (a % 3) == (b % 3); // 自定义比较规则,这里按模3的结果分组
}int main() {std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};// 使用unique配合自定义比较函数auto last = std::unique(vec.begin(), vec.end(), customCompare);// 删除多余的元素vec.erase(last, vec.end());// 输出结果for(int i : vec) {std::cout << i << " ";}std::cout << std::endl;return 0;
}
微语录:不积跬步,无以至千里;不积小流,无以成江海。
相关文章:
【蓝桥】常用库函数
1、memset()函数 1.1 基本介绍 定义在头文件<cstring>中主要作用是对一块内存区域进行设置值的操作 1.2 函数原型 void *memset(void *str, int c, size_t n);str:指向要填充的内存块的指针c:要设置的值。该值以int形式传递,但函数在…...
用DeepSeek生成批量删除处理 PDF第一页工具
安装依赖库 在运行程序之前,请确保安装所需的库: pip install pymupdf python-docx Python 程序代码 import os import fitz # PyMuPDF from docx import Documentdef delete_pdf_first_page(input_path, output_path):"""删除 PDF…...
关于高精度力扣66
class Solution { public: vector<int> plusOne(vector<int>& d) { if(d.back()<9){ d[d.size()-1]; return d; } else{ string temp; for(int i0;i<d.size();i){ temptempto_string(d[i]); } int astoi(temp);//这里会报错是因为超过int表示的范围了 a…...
03.03 QT
1.在注册登录的练习里面,追加一个QListwidget 项目列表 要求:点击注册之后,将账号显示到 1istwidget上面去 以及,在listwidget中双击某个账号的时候,将该账号删除 Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWi…...
华为云 | 快速搭建DeepSeek推理系统
DeepSeek(深度求索)作为一款国产AI大模型,凭借其高性能、低成本和多模态融合能力,在人工智能领域崛起,并在多个行业中展现出广泛的应用潜力。 如上所示,在华为云解决方案实践中,华为云提供的快速…...
BUUCTF [BJDCTF2020]EasySearch1
写一篇文章来学习一下 ssi 注入 以及 dirmap 工具的使用 看到这两个框框没什么想法,边探索边扫下目录吧。显示前端报错,先禁用了js,然后又尝试抓了下包,没有发现什么,只好看看扫出来的目录了,最终扫出来了…...
探秘基带算法:从原理到5G时代的通信变革【五】CORDIC算法
文章目录 2.4 CORDIC算法2.4.1 CORDIC算法的基本原理2.4.2 方法论与分类体系旋转模式矢量模式线性模式 2.4.3 **CORDIC 算法中的误差来源****角度逼近误差的分析****缩放效应误差的分析****精度需求与迭代次数的关系****常见应用场景下的迭代次数建议****总结** 2.4.4优缺点分析…...
FPGA学习篇——Verilog学习2
1 系统函数 Verilog 语言中预先定义了一些任务和函数,用于完成一些特殊的功能,它们被称为系统任务和系统函数,这些函数大多数都是只能在 Testbench 仿真中使用的,使我们更方便的进行验证。 1.1 时间预编译指令及延时 时间精度&a…...
51单片机编程学习笔记——74HC245八路三态输出双向收发器
大纲 组成电源引脚和地引脚使能输入端DIR(T/R)引脚A端和B端 工作原理数据传输方向控制使能控制 在单片机系统里,单片机的 I/O 口驱动能力往往有限。当需要连接较多外部设备或者负载较大时,就可能出现信号传输不稳定的问题。74HC24…...
C++:类和对象(下篇)
1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _mont…...
Full GC 排查
在 Java 中,Full GC(完全垃圾回收)会对整个堆(包括年轻代和老年代,甚至可能包括永久代/元空间)进行垃圾回收,通常会导致较长的停顿(STW,Stop-The-World)。如果…...
DeepSeek集成到VScode工具,让编程更高效
DeepSeek与VScode的强强联合,为编程效率树立了新标杆。 DeepSeek,一款卓越的代码搜索引擎,以其精准的索引和高速的检索能力,助力开发者在浩瀚的代码海洋中迅速定位关键信息。 集成至VScode后,开发者无需离开熟悉的编辑…...
PPT 小黑第38套
对应大猫40 幻灯片母板-最后一页-重命名为奇数页 奇偶页-点中标题-形状格式-形状填充-青色 最后一页页码左对齐 更换幻灯片背景:设计-设置背景格式-图片填充 【开始】-段落居中,对齐文本-中部对齐,排列-对齐-底端,-再水平居中…...
[Web 安全] PHP 反序列化漏洞 —— PHP 魔术方法
关注这个专栏的其他相关笔记:[Web 安全] 反序列化漏洞 - 学习笔记-CSDN博客 PHP 魔术方法 - 简介 - PHP 魔术方法 - 简单教程,简单编程PHP 中,以两个下划线 ( __ ) 开头方法称之为 「 魔术方法 」 这些 「 魔术方法 」 在 [PHP](/l/yufei/php…...
一、图形图像的基本概念
文章目录 一、分辨率概念二、图形图像的区别三、位图和矢量图的区别 一、分辨率概念 图形显示计数中的分辨率概念有三种,即屏幕分辨率、显示分辨率和显卡分辨率。它们既有区别又有着密切的联系,对图形显示的处理有极大的影响。 1.屏幕分辨率 显示器分辨…...
基于Matlab的多目标粒子群优化
在复杂系统的设计、决策与优化问题中,常常需要同时兼顾多个相互冲突的目标,多目标粒子群优化(MOPSO)算法应运而生,作为群体智能优化算法家族中的重要成员,它为解决此类棘手难题提供了高效且富有创新性的解决…...
20250303-代码笔记-class CVRPTester
文章目录 前言一、class CVRPTester:__init__(self,env_params,model_params, tester_params)1.1函数解析1.2函数分析1.2.1加载预训练模型 1.2函数代码 二、class CVRPTester:run(self)函数解析函数代码 三、class CVRPTester:_test_one_batch(self, batch_size)函数解析函数代…...
C++学习之C++初识、C++对C语言增强、对C语言扩展
一.C初识 1.C简介 2.第一个C程序 //#include <iostream> //iostream 相当于 C语言下的 stdio.h i - input 输入 o -output 输出 //using namespace std; //using 使用 namespace 命名空间 std 标准 ,理解为打开一个房间,房间里有我们所需…...
依赖注入与控制反转什么关系
依赖注入属于控制反转(Inversion of Control,IoC)设计模式的一种具体实现方式。以下是具体解释: 控制反转 控制反转是一种设计思想,它将对象之间的依赖关系的控制权从对象内部转移到了外部的容器或框架中。在传统的编…...
关于虚拟环境中遇到的bug
conda和cmd介绍 介绍 Conda 概述: Conda是一个开源包管理系统和环境管理系统,尤其适用于Python和R语言的开发环境。它允许用户创建独立的虚拟环境,方便地管理依赖包和软件版本。 特点: 环境管理:可以创建、导入、导…...
【网络安全 | 渗透测试】GraphQL精讲一:基础知识
未经许可,不得转载, 文章目录 GraphQL 定义GraphQL 工作原理GraphQL 模式GraphQL 查询GraphQL 变更(Mutations)查询(Queries)和变更(Mutations)的组成部分字段(Fields)参数(Arguments)变量别名(Aliases)片段(Fragments)订阅(Subscriptions)自省(Introspecti…...
01_NLP基础之文本处理的基本方法
自然语言处理入门 自然语言处理(Natural Language Processing, 简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域,主要目标是让机器能够理解和生成自然语言,这样人们可以通过语言与计算机进行更自然的互动。 …...
Oracle 导出所有表索引的创建语句
在Oracle数据库中,导出所有表的索引创建语句通常涉及到使用数据字典视图来查询索引的定义,然后生成对应的SQL语句。你可以通过查询DBA_INDEXES或USER_INDEXES视图(取决于你的权限和需求)来获取这些信息。 使用DBA_INDEXES视图 如…...
什么是JTAG、SWD?
一、什么是JTAG? JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,常用于芯片内部测试及对系统进行调试、编程等操作。以下从其起源、工作原理、接口标准、应用场景等方面详细介绍:…...
物理竞赛中的线性代数
线性代数 1 行列式 1.1 n n n 阶行列式 定义 1.1.1:称以下的式子为一个 n n n 阶行列式: ∣ A ∣ ∣ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ∣ \begin{vmatrix}\mathbf A\end{vmatrix} \begin{vmatrix} a_{11…...
如何在Apple不再支持的MacOS上安装Homebrew
手头有一台2012年产的Macbook Pro,系统版本停留在了10.15.7(2020年9月24日发布的)。MacOS 11及后续的版本都无法安装到这台老旧的电脑上。想通过pkg安装Homebrew,发现Homebrew releases里最新的pkg安装包不支持MacOS 10.15.7&…...
深入探索DeepSeek开源之旅:开源Week全程解析
摘要 在农历新年刚刚结束之际,DeepSeek以卓越的开源精神,连续六天举办了开源Week活动。这一系列活动不仅展示了DeepSeek在技术领域的活跃度和影响力,还彰显了其对开源社区的贡献。通过这次活动,DeepSeek吸引了众多开发者和技术爱好…...
无人机遥控器无线传输技术解析!
一、主流无线传输方式 无线电遥控系统(2.4GHz/5.8GHz频段) 频段特性:2.4GHz频段穿透力强、覆盖距离远(可达2公里以上),适合控制信号传输;5.8GHz频段带宽更高,适用于高清视频流&…...
微调训练方法概述:Fine-tuning、Prompt-tuning、P-tuning 及其他高效技术
在深度学习和自然语言处理(NLP)领域,预训练模型(如 GPT、BERT 等)已经成为许多任务的基石。然而,尽管这些模型在预训练阶段学习了大量的通用知识,它们通常仍然需要根据特定任务进行微调…...
在笔记本电脑上用DeepSeek搭建个人知识库
最近DeepSeek爆火,试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下,在笔记本电脑上部署DeepSeek并使用开源工具搭建一套知识库,实现完全在本地环境下使用本地文档搭建个人知识库。操作过程共…...
