在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函数相关推荐

  1. Python中numpy.power()函数介绍

    Python中numpy.power()函数介绍 power(x, y) 函数,计算 x 的 y 次方. 示例: x 和 y 为单个数字: import numpy as npprint(np.pow ...

  2. 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 ...

  3. sql中的Power函数(幂运算)

    POWER 返回给定表达式乘指定次方的值. 语法: POWER ( numeric_expression , y ) 参数: numeric_expression:是精确数字或近似数字数据类型类别的表 ...

  4. numpy中的power函数

    文章目录 用法 用法 np.power(x,y) 计算x的y次方 根据x,y的类型分为 x:数字,y:数字 np.power(2,2) 4,2的2次方 - x:数字,y:列表 np.power(2,[ ...

  5. python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数返回浮点数

    python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点 ...

  6. python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数

    python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点数 目录

  7. Matlab中power函数的使用

    目录 语法 说明 示例 计算向量每个元素的平方 计算每个矩阵元素的倒数 以列向量为指数对行向量按元素求幂 计算数的根 power, .^函数的功能是按元素求幂 语法 C = A.^BC = power ...

  8. Python 中关于 round 函数的小坑

    这个一直都想写,但是因为这个点比较小,所以一直懒得动手.不过还是补上吧,留着早晚是个祸害. round函数很简单,对浮点数进行近似取值,保留几位小数.比如: >>> round(10 ...

  9. python自带的sum()函数和numpy库中的sum()函数的区别

    在学习<机器学习实战>一书的第十章时,对 return np.sqrt(sum(np.power(vecA - vecB, 2))) 这样一条语句输出的结果老是不对,明明想要输出的是对两个 ...

最新文章

  1. 利用python+seleniumUI自动化登录获取cookie后再去测试接口,今天终于搞定了
  2. Linux下部署开源版“禅道”项目管理系统
  3. datagirdview跟据内容自动适应单元格大小
  4. C语言经典例19-完数
  5. es的query及filter
  6. PHP怎么读写XML?(四种方法)
  7. Topo系统的益处和帮助
  8. cgcs2000大地坐标系地图_为什么要从北京54和西安80统一到CGCS2000?测绘人必知!...
  9. Linux下解压缩包命令
  10. php制作学生卡片,PHP基础案例一:展示学生资料卡
  11. 不重叠的线段(51Nod-1133)
  12. 【bzoj2338】[HNOI2011]数矩形 计算几何
  13. 【排序算法】希尔排序-常规排序
  14. ST-Link下载 KELL5程序下载 STM32程序下载
  15. 四旋翼无人机飞控系统设计(方案篇)
  16. ubuntu16.04+Tesla P100+cuda+anaconda+cudnn+tensorflow:从0开始安装
  17. Fresh gizmo
  18. 学习ARM开发(4)
  19. javascript之雪花特效
  20. Shuffle机制的详细介绍

热门文章

  1. 零数科技荣获2022金融科技创新引领奖
  2. golang检查服务器资源并输出docx报告文档
  3. 约瑟夫问题的几种解决方法
  4. Hulu(北京)推荐算法负责人周涵宁:怎样应对基于深度学习的视频推荐系统...
  5. Duang,HUAWEI DevEco IDE全面升级啦
  6. 1. Python入门
  7. 如何在word中插入LaTeX代码公式(不用下载插件)
  8. 逻辑像素pt和物理像素px的区别
  9. 侯捷C++(一、面向对象)
  10. 流式计算的三种框架:Storm、Spark和Flink