C++中STL的威力

3
我在STL的numeric头文件中找到了计算power(TYPE T, Integer a),时间复杂度为O(log(a))的函数power,但是当我写完并使用g++编译时,出现了编译错误,提示error: ‘power’ was not declared in this scope。为什么会这样?我知道编写时间复杂度为O(log(N))的power函数很容易,但我想知道C++标准库中是否有现成的函数。C++11标准中是否添加了任何功能?

或许你想使用C++的一部分std::pow。 - Johannes Schaub - litb
4个回答

8

那个函数是SGI原始的STL中的,但不在标准库中。

在GNU库中,它作为扩展可用,__gnu_cxx::power<ext/numeric> 中。


2
@Farzam:包含头文件并调用函数。 - Mike Seymour

7

从您提供的页面中:

此函数是SGI扩展,不属于C++标准。

虽然SGI文档通常很有帮助,但请注意它包含几个与标准不一致的地方。


5
在C++11中,没有类似std::power或其他类似的算法。

2
<cmath>头文件中,有几个针对标准数值类型的重载版本。您需要一个模板化版本的特定原因吗?

您还可以在问题中添加注释。 - PlasmaHH
1
当然,我认为一个他可以使用的幂函数也可能是一个有用的答案。 - Collin
例如,如果您有一个名为 matrix 的类,并在其上定义了多(*)运算符,如果您有矩阵 A,则可以仅使用log(N)次乘法计算power(A,N)。 - Farzam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接