C++ Valarray::pow 函数



C++ Valarray::pow() 函数返回一个 valarray,其中包含对所有元素进行幂运算的结果,顺序相同。计算结果为 x 的 y 次幂 (xy)。

如果 x 或 y 是单个 T 值,则对 x 和 y 中的每个元素都调用一次 pow 函数,该函数将用于所有调用。此函数重载了 cmath 的 pow 函数。

语法

以下是 C++ Valarray::pow 函数的语法:

pow (const valarray<T>& x, const valarray<T>& y);
pow (const valarray<T>& x, const T& y);
pow (const T& x, const valarray<T>& y);

参数

  • x − 指示幂运算的底数元素。

  • y − 指示幂运算的指数元素。

示例

示例 1

让我们来看下面的例子,我们将使用 pow() 函数并获取输出。

#include <iostream>
#include <valarray>
using namespace std;

int main() {
   valarray<int> varr = { -2,0,-3,4,-5 };
   valarray<int> valarray1;
   valarray1 = pow(varr, 5);
   cout << "The New pow"
      << " Valarray is : "
      << endl;
   for (int& a : valarray1) {
      cout << a << " ";
   }
   cout << endl;
   return 0;
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

The New pow Valarray is : 
-32 0 -243 1024 -3125 

示例 2

让我们考虑下面的例子,我们将使用 pow() 函数并获取原始 valarray 和 pow valarray 的输出。

#include <iostream>
#include <valarray>
using namespace std;

int main() {
   valarray<double> myvalarray = { 2,4,0.6,-8,-9 };
   cout << "The Orignal Valarray is : ";
   
   for (double& ele : myvalarray)
      cout << ele << " ";
   valarray<double> powValarray;
   powValarray = pow(myvalarray, 2);
   cout << "\nThe pow Valarray is : ";
   
   for (double& ele : powValarray)
      cout << ele << " ";
   return 0;
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

The Orignal Valarray is : 2 4 0.6 -8 -9 
The pow Valarray is : 16 0.36 64 81

示例 3

在下面的例子中,我们将使用 pow() 函数 (const std::valarray<t>& base, const std::valarray<t>& exp) 并获取输出。

#include <cmath>
#include <cstddef>
#include <iomanip>
#include <iostream>
#include <valarray>

class tutorial {
   friend std::ostream& operator<< (std::ostream& os, tutorial const& r) {
      constexpr char const* sup[] {
         "\u2070", "\u00B9", "\u00B2", "\u00B3", "\u2074",
         "\u2075", "\u2076", "\u2077", "\u2078", "\u2079",
      };
      for (std::size_t n = 0; n != r.base.size(); ++n) {
         os << std::left << r.base[n] << std::left;
         if (n < r.exponent.size())
            os << sup[r.exponent[n] % 10] << " ";
         else
            os << "  ";
      }
      if (r.results.size() != 0) {
         os << "=";
         for (std::size_t n = 0; n != r.results.size(); ++n)
            os << " " << r.results[n];
      }
      return os << '\n';
   }
   public:
   std::valarray<int> base{}, exponent{}, results{};
};
int main() {
   const std::valarray<int> base { 2,4,6,8,10};
   const std::valarray<int> exponent {1,3,5,7,9 };
   const std::valarray<int> power1 = std::pow(base, exponent);
   std::cout<< "pow  : " << tutorial{base, exponent, power1};
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

pow  : 2¹ 4³ 6⁵ 8⁷ 10⁹ = 2 64 7776 2097152 1000000000
广告