首页 > 其他分享 >各种内置函数技巧总结

各种内置函数技巧总结

时间:2024-11-16 16:40:10浏览次数:1  
标签:__ 返回 内置 log double 函数 len builtin 技巧

各种内置函数技巧总结

数学库等

  • 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\) 的总字节数。

标签:__,返回,内置,log,double,函数,len,builtin,技巧
From: https://www.cnblogs.com/dccy/p/18549504

相关文章

  • 将数值转换为字符串的函数
    在C++中,itoa和sprintf是用于将数值转换为字符串的经典函数。然而,它们有一定的局限性或者安全性问题,现代C++更倾向于使用标准库的解决方案,如std::to_string和std::stringstream,来代替这些函数。可以看看这篇博客streamstring类介绍1.itoa的替代itoa是一种将整数转......
  • JPQL与数据库函数的完美结合实例
    在Java持久化操作中,JPQL(JavaPersistenceQueryLanguage)是一种强大的查询语言,它允许开发者以面向对象的方式执行数据库查询。JPQL不仅支持对实体属性的查询,还支持调用内置和用户自定义的数据库函数。本文将通过一个具体实例,展示如何在JPQL中调用H2数据库的内置函数,以实现更......
  • 动画函数封装
    5.2.1、简单动画实现核心原理:通过定时器setInterval()不断移动盒子位置实现步骤:获得盒子当前位置、让盒子在当前位置上加上1个移动距离、利用定时器不断重复这个操作、加一个结束定时器的条件需要给元素加定位,利用left值变化改变元素的位置<!--需求:小盒子从左向右移......
  • stoi函数介绍
    stoi是C++标准库中的一个函数,定义在头文件<string>中,它用于将字符串转换为整数类型。函数原型intstoi(conststd::string&str,size_t*idx=0,intbase=10);str(必选):要转换的字符串,必须以数字开头(可以包含正负号)。插一句题外话如果不以数字开头,会这样:idx(可......
  • Python 开发(13):文件与目录操作的实用技巧
    Python开发(13):文件与目录操作的实用技巧文件和目录操作是每个开发者在日常工作中不可或缺的部分。Python提供了丰富的文件和目录操作功能,如读取、写入文件、遍历目录、文件权限管理等。这些功能不仅适用于小型脚本项目,在数据处理、自动化任务和服务器开发中也十分常用。......
  • Mac电脑技巧:适用于Mac的免费外置硬盘数据恢复软件
    “我有一个1TB的外置硬盘,它被意外格式化了。我尝试从中恢复丢失的数据。我把它连接到我的Mac,但里面什么也没找到。我正在寻找适用于Mac的免费外置硬盘数据恢复软件,例如奇客数据恢复Mac版或其他Mac数据恢复免费软件来扫描它并恢复数据。你有什么建议吗?当Mac用户丢失外部硬盘......
  • django 数据库ORM通用的公共函数
    通用查询1、公共函数:defgeneric_query(model,filter_kwargs=None,order_by=None,limit=None,aggregate=None,annotate=None):"""通用的DjangoORM查询函数。:parammodel:Django模型类:paramfilter_kwargs:过滤条件字典:paramorder_by:......
  • 20141116电路板维修入门之集成电路代换技巧篇
    一、直接代换直接代换是指用其他IC不经任何改动而直接取代原来的IC,代换后不影响机器的主要性能与指标。其代换原则是:代换IC的功能、性能指标、封装形式、引脚用途、引脚序号和间隔等几方面均相同。其中IC的功能相同不仅指功能相同;还应注意逻辑极性相同,即输出输入电平极性、电......
  • YouTube广告投放该怎么做?实用技巧与策略分享
    广告投放并非仅仅是简单的选择广告类型和设置预算,它涉及到策略的制定、目标受众的精准定位、以及技术上的支持。IPdodo会在本文中分享如何进行有效的YouTube广告投放,并解释代理IP在其中有什么样的妙用?一、YouTube广告投放的基本概述YouTube广告投放是通过GoogleAds(原Google......
  • 关于在Reverse函数中不能使用L=s而是*L=*s的原因分析
    完整代码地址:https://blog.csdn.net/2301_76819732/article/details/143807340?spm=1001.2014.3001.5502如果使用L=s;的话,当输出结果时,会发现内容为空。我感到很奇怪,按照我的设想,L=s;会把s指向的地址赋给L。但现在这个情况肯定是失败的了。我随便试了一试,发现如果......