当前位置: 首页 > article >正文

蓝桥杯练习日常|c/c++竞赛常用库函数(下)

书接上回......蓝桥杯算法日常|c\c++常用竞赛函数总结备用-CSDN博客

目录

书接上回......https://blog.csdn.net/weixin_47011416/article/details/145290017

1、二分查找

2、lower_bound  uper_bound

3、memset()

函数原型

参数说明

返回值

常见用法

4、swap()

5、reverse()

6、unique()


1、二分查找

vector<int> numbers={1.3.7.9}; 

banary_search(numbers.begin(),numbers.end(),target);在已经排好序的序列中查找特定值,返回bool值。

2、lower_bound  uper_bound

vector<int> v={1,5,2,7,9,2,10};

sort(v.begin(),v.end());

for(auto &i:v)cout<<i<<' ';

cout<<'\n';

cout<<(lower_bound(v.begin(),v.end(),

8)-v.begin())<<'\n';

lower_bound(start地址,end地址,x)   返回从开始到结束左闭右开中第一个大于等于x的元素的地址。利用地址-首地址=下标得出下表的值。

upperbound(start地址,end地址,x)     返回左闭右开第一个大于x的元素的地址。

3、memset()

头文件<cstring>,用于将一段内存区域设置为指定的值。

函数原型

c复制代码

void *memset(void *s, int c, size_t n);

参数说明

  • s:指向要填充的内存区域的指针。
  • c:要设置的值,通常是一个无符号字符。
  • n:要被设置为该值的字节数。

返回值

该函数返回一个指向存储区 s 的指针。

常见用法

  • 初始化数组:可以使用 memset() 快速地将数组中的所有元素初始化为特定值,例如将一个整数数组清零或设置为某个特定的初始值。
  • 初始化结构体:对于结构体变量或结构体数组,可以使用 memset() 将其内存空间初始化为特定值,以便在后续使用中确保数据的一致性和安全性。
  • 清空内存区域:通过将 c 设置为0,memset() 可以用来清空一段内存区域,即将所有字节设置为0。这在释放内存之前清理数据结构或避免内存泄漏时特别有用。
#include<bits/stdc++.h>
int main(){
int a[5];
memset(a,0,sizeof(a));
for(int i=0;i<5;i++)cout<<a[i]<<'\n';
return 0;
}

4、swap()

  • 功能:用于交换两个对象的值。
  • 用法swap(a, b);其中 a 和 b 是要交换值的两个对象,它们必须是相同的类型。
  • 可以用于交换任意种类的变量,基本类型(整数,浮点)和自定义类型(结构体,类对象等)

5、reverse()

  • 功能:用于反转一个序列的元素,定义在 <algorithm> 头文件中。包括数组,向量,链表。
  • 语法template <class BidirectionalIterator> void reverse(BidirectionalIterator first, BidirectionalIterator last);
  • 参数first 和 last 用于指定要转换的数据范围 [first, last)
  • 注意事项:需要双向迭代器来工作,所以可以与 std::vectorstd::deque 和 std::list 之类的容器一起使用,但不能用于 std::set 和 std::map 这样的容器,因为它们的内部是有序的,不能做反转操作。

6、unique()

  • 用于除容器中相邻复元素的函数(!!必须相邻,如果不相邻,用sort排个序)
  • 用法:iterator unique(iterator it_1, iterator it_2);,表示对容器中 [it_1, it_2) 范围的元素进行去重,返回值是一个迭代器,指向去重后容器中不重复序列的最后一个元素的下一个元素。
  • 返回指向去重后范围的尾后迭代器

7、pow()

计算某数的n次方:

double base = 2.0; // 底数
int exponent = 3; // 指数
double result = pow(base, exponent); // 计算2


http://www.kler.cn/a/521663.html

相关文章:

  • 解锁微服务:五大进阶业务场景深度剖析
  • 《HelloGitHub》第 106 期
  • ping命令详解Type 8和0 或者Type 3
  • shiro学习五:使用springboot整合shiro。在前面学习四的基础上,增加shiro的缓存机制,源码讲解:认证缓存、授权缓存。
  • SQL注入漏洞之高阶手法 宽字节注入以及编码解释 以及堆叠注入原理说明
  • Vue.js组件开发-实现下载时暂停恢复下载
  • day7手机拍照装备
  • Visio2021下载与安装教程
  • 人工智能在教育中的创新应用:打造未来的智慧课堂
  • QT TLS initialization failed
  • 【Linux】gdb——Linux调试器
  • 【文星索引】搜索引擎项目测试报告
  • C++封装红黑树实现mymap和myset和模拟实现详解
  • python学opencv|读取图像(四十六)使用cv2.bitwise_or()函数实现图像按位或运算
  • 窗户11 JH小记(xswl 随时失效版)
  • 【Python】 python实现我的世界(Minecraft)计算器(重制版)
  • 快速清除PPT所有幻灯片动画的三种方法
  • 使用大语言模型在表格化网络安全数据中进行高效异常检测
  • doris: ARRAY数据类型
  • JAVA学习-练习试用Java实现“向一个文本文件中写入一些内容。”
  • [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器
  • 【Redis】缓存+分布式锁
  • Bambu A1 Mini 不工作,轴无法归零,进料面板检测到未知材料解决方案
  • 【深度学习|DenseNet-121】Densely Connected Convolutional Networks内部结构和参数设置
  • 开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程
  • 12 款开源OCR发 PDF 识别框架