各种内置函数技巧总结

news/2024/11/16 16:54:12/文章来源:https://www.cnblogs.com/dccy/p/18549504

各种内置函数技巧总结

数学库等

  • abs(x) 取绝对值,自动类型,注意没有 abs(__int128)
  • (int)(x*100+0.5)/100.0 四舍五入保留两位小数。
  • printf("%.2lf",x)double 类型输出 \(x\) 保留两位小数,有时不一定四舍五入。long double 的格式符是 %Lf

以下函数在函数名末尾加上 l 就是对应的 long double 类型。

  • pow(x,y) 指数函数。

  • sqrt(x) 开平方。

  • floor(x) 向下取整。

  • ceil(x) 向上取整。

  • round(x) 四舍五入保留整数。

  • log10(x)double 类型返回 \(\log_{10}(x)\)

  • log2(x)double 类型返回 \(\log_2(x)\)

  • log(x)double 类型返回 \(\log_e(x)\)

    注意我们有 \(\log_a(b)=\dfrac{\log_e(b)}{\log_e(a)}\)

  • exp(x) 返回 \(e^x\)

  • sin(x)cos(x)tan(x) 三角函数。

  • asin(x)acos(x)atan(x) 反三角函数。

  • \(\pi\) 可以表示为 acos(-1)acosl(-1)

builtin 内建函数等

以下宏的参数都是 unsigned int

  • __builtin_popcount(x) 返回 \(x\) 二进制中 1 的个数。
  • __builtin_clz(x) 返回 \(x\) 前导 0 的个数。
  • __builtin_ctz(x) 返回 \(x\) 末尾 0 的个数。

它们对应的 unsigned long long 就是:

__builtin_popcountll__builtin_clzll(x)__builtin_ctzll(x)

\(\log_2(x)\) 可以表示为 31^__builtin_clz(x),实测它比 __lg(x)\(55\%\)

__lg(x)

返回 \(\log_2(x)\) 的整数部分,返回值是整型,\(x\) 的范围可达 64 位。

可能会比预处理 lg 数组更优美。

__gcd(x,y)

返回 \(x,y\) 的最大公约数,\(x,y\) 的范围可达 64 位。

实测略比以下代码更快。

int gcd(int x,int y){if(y==0) return x;return gcd(y,x%y);
}

lowbit

x&(-x)

算法库

  • lower_bound(begin,end,val) 二分查找第一个大于等于的。
  • upper_bound(begin,end,val) 二分查找第一个大于的。
  • unique(begin,end) 对排好序的序列去重,返回去重后的末尾地址的下一个地址。
  • sort(begin,end,cmp) 排序。
  • maxmin

cstring

  • memset(begin,val,len)\(begin\) 开始的 \(len\)字节赋值 \(val\)
  • memcpy(begin1,begin2,len)\([begin2,begin2+len)\)\(len\) 个字节赋值到 \([begin1,begin1+len)\)
  • sizeof x 返回数组 \(x\) 的总字节数。

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

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

相关文章

AI|经常崩溃的问题解决

Adobe Illustrator Crashes 网络上大部分说法都是重装AI,兼容性问题,管理员权限或者是版本不对,经测试均无效,甚至出现重装系统这种离谱的办法,正确的解决办法是把首选项的性能里的GPU取消勾选,或者再把电脑的虚拟内存扩大即可。Step1:打开首选项 Step 2:取消勾选GPU性…

吐槽ubuntu上pdf阅读器

! https://zhuanlan.zhihu.com/p/6483861108 细数(吐槽)ubuntu(linux)上pdf阅读器不好用的地方 作为一枚研究僧,有使用ubuntu(linux)的需求,同时也有在ubuntu上看学术文献的需求(毕竟有时候懒得切换回windows)。对于pdf学术文献阅读,最需要功能是高亮、点击跳转、(跳转后)返…

数据采集与融合技术作业4

Gitee作业链接:https://gitee.com/zheng-qijian33/crawl_project/tree/master/作业4 作业①: 要求: 熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的…

书生共学大模型实战营第4期 L1G4000任务提交

基于LlamaIndex构建自己的RAG知识库,寻找一个问题A在使用LlamaIndex之前浦语API不会回答,借助LlamaIndex后浦语API具备回答A的能力 我们选择了一个名为wereader的Github小众项目,这是一个Chrome/Firefox扩展,主要用于微信读书做笔记,对常使用Markdown做笔记的读者比较有帮…

Springboot 集成Apollo配置中心【记录】

一、前言 ​ 我们经常会在Springboot项目中集成配置中心,无外乎是因为配置中心即时改即时生效的缘故。而我选择Apollo的原因,是因为它有个草稿、然后发布的功能,这在上生产发布前,提前配置好变更项,检查通过再发布,这种机制对于我们来说可太友好了!二、步骤 2.1 pom.xm…

JUC---ThreadLocal原理详解

什么是ThreadLocal? 通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢? JDK 中自带的ThreadLocal类正是为了解决这样的问题。 ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类…

一文讲透 FPGA CDC 多bit跨时钟域同步-hand-shanking机制

一、背景 数据的跨时钟域处理是FPGA开发过程中的常见问题,存在两种情况慢时钟向快时钟同步:只需在快时钟域打两拍即可。其RTL如下:打拍同步的原理:大家在初学FPGA时,经常听过FPGA中对信号打拍可以有效得避免亚稳态,而且一般要打两拍,其数学本质是如果打一拍发生错误得概…

KBPC3510-ASEMI整流桥KBPC3510参数、封装、尺寸

KBPC3510-ASEMI整流桥KBPC3510参数、封装、尺寸编辑:ll KBPC3510-ASEMI整流桥KBPC3510参数、封装、尺寸 型号:KBPC3510 品牌:ASEMI 封装:KBPC-4 正向电流:35A 反向电压:1000V 引脚数量:4 芯片个数:4 芯片尺寸:50MIL 漏电流:>10ua 恢复时间:>2000ns 浪涌电流:…

IDEA中操作表

Navicat中创建的表,同时也可以在IDEA中打开。 IDEA中侧边可以创建架构 可以选择相应排序规则以及创建新的表,但不如navicat方便

使用while循环分别对两个vector进行赋值,该怎么做

问题 在写程序的时候遇到了这样一个问题,见代码 #include <iostream> #include <vector>using namespace std;bool isequal(vector<int> vshort, vector<int> vlong) {for (int index = 0; index != vshort.size(); index++)if (vshort[index] != vlo…

合并具有文本框的Word文档:VBA代码批量操作

本文介绍基于VBA语言,对大量含有图片、文本框与表格的Word文档加以批量自动合并,并在每一次合并时添加分页符的方法~本文介绍基于VBA语言,对大量含有图片、文本框与表格的Word文档加以批量自动合并,并在每一次合并时添加分页符的方法。在我们之前的文章中,介绍过基于Pytho…

streamstring类介绍

std::stringstream 是 C++ 标准库中提供的一个类,定义在头文件 <sstream> 中。它是基于字符串的流(stream),允许像操作输入流(std::cin)或输出流(std::cout)那样,操作字符串内容。 std::stringstream 是 std::iostream 的派生类,支持同时进行字符串解析(输入)…