C++中的power函数
在cmath头文件中存在函数pow,在stl_numeric.h中存在对于power的具体实现
只看一下对于power的具体实现,之前不知道有没有听说过快速幂,power可以说就是快速幂的实现
函数原型如下:
template <class T, class Integer>
inline T power(T x, Integer n) {return power(x, n, multiplies<T>()); //默认使用乘法的仿函数
}
template <class T>
struct multiplies : public binary_function<T, T, T> {T operator()(const T& x, const T& y) const { return x * y; }
};
发现power中默认实现x^n操作,那么具体实现如下:
template <class T, class Integer, class MonoidOperation>
T power(T x, Integer n, MonoidOperation op) {if (n == 0)return identity_element(op);else {while ((n & 1) == 0) { //这里发现n一直为偶数,那么直接原数相乘,n缩小2倍n >>= 1;x = op(x, x);}T result = x; //这里result保存一个x,n可以理解为变回奇数n >>= 1; //缩小2倍,继续指向下面的操作while (n != 0) {x = op(x, x);if ((n & 1) != 0) //发现是奇数 将奇数去除,即乘一个xresult = op(result, x);n >>= 1;}return result; //最终结果result}
}
感觉这样的实现相对于之前的一直在写的快速幂,逻辑性更好一些,并且这里支持泛型以及仿函数操作操作,可以不使用默认的乘法仿函数,改用自己定义的仿函数!
C++中的power函数相关推荐
- Python中numpy.power()函数介绍
Python中numpy.power()函数介绍 power(x, y) 函数,计算 x 的 y 次方. 示例: x 和 y 为单个数字: import numpy as npprint(np.pow ...
- java power函数怎么用,Java中的Power函数
hi guys, i want to find 2^n (pow(2,n)). I am doing java.lang.Math and using power function. But erro ...
- sql中的Power函数(幂运算)
POWER 返回给定表达式乘指定次方的值. 语法: POWER ( numeric_expression , y ) 参数: numeric_expression:是精确数字或近似数字数据类型类别的表 ...
- numpy中的power函数
文章目录 用法 用法 np.power(x,y) 计算x的y次方 根据x,y的类型分为 x:数字,y:数字 np.power(2,2) 4,2的2次方 - x:数字,y:列表 np.power(2,[ ...
- python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数返回浮点数
python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点 ...
- python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数
python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点数 目录
- Matlab中power函数的使用
目录 语法 说明 示例 计算向量每个元素的平方 计算每个矩阵元素的倒数 以列向量为指数对行向量按元素求幂 计算数的根 power, .^函数的功能是按元素求幂 语法 C = A.^BC = power ...
- Python 中关于 round 函数的小坑
这个一直都想写,但是因为这个点比较小,所以一直懒得动手.不过还是补上吧,留着早晚是个祸害. round函数很简单,对浮点数进行近似取值,保留几位小数.比如: >>> round(10 ...
- python自带的sum()函数和numpy库中的sum()函数的区别
在学习<机器学习实战>一书的第十章时,对 return np.sqrt(sum(np.power(vecA - vecB, 2))) 这样一条语句输出的结果老是不对,明明想要输出的是对两个 ...
最新文章
- 利用python+seleniumUI自动化登录获取cookie后再去测试接口,今天终于搞定了
- Linux下部署开源版“禅道”项目管理系统
- datagirdview跟据内容自动适应单元格大小
- C语言经典例19-完数
- es的query及filter
- PHP怎么读写XML?(四种方法)
- Topo系统的益处和帮助
- cgcs2000大地坐标系地图_为什么要从北京54和西安80统一到CGCS2000?测绘人必知!...
- Linux下解压缩包命令
- php制作学生卡片,PHP基础案例一:展示学生资料卡
- 不重叠的线段(51Nod-1133)
- 【bzoj2338】[HNOI2011]数矩形 计算几何
- 【排序算法】希尔排序-常规排序
- ST-Link下载 KELL5程序下载 STM32程序下载
- 四旋翼无人机飞控系统设计(方案篇)
- ubuntu16.04+Tesla P100+cuda+anaconda+cudnn+tensorflow:从0开始安装
- Fresh gizmo
- 学习ARM开发(4)
- javascript之雪花特效
- Shuffle机制的详细介绍