数字类型从多项式类型

Number type from a polynomial type

本文关键字:类型 多项式 数字      更新时间:2023-10-16

我正在写一些多项式的模板函数。他们将输入一个多项式,例如

template<typename polynomial>
auto evaluate(polynomial const& pol, polynomial::value_type x ) -> dectype(pol[0])
{
    // return Horner-Ruffini
};

polynomial类可以仅为std::vector<T>,在这种情况下,我希望xT类型,或其他自定义多项式类。

定义模板化函数的正确方法是什么?我在polynomial = std::vector<double>的情况下很难正确地书写它。

注意:上面的代码包含了我对如何定义x的类型和返回类型的一些猜测,但它们似乎不正确。

您可能应该更多地考虑p类型的约束(即是否可以接受value_type成员等),但这适用于您的std::vector情况:

#include <vector>
#include <iostream>
template<typename p>
typename p::value_type evaluate(p const& pol, typename p::value_type x) {                                                                                                        
  typename p::value_type result = 0;
  for (const auto& v : pol) {
    result = result * x + v;
  }
  return result;
}
int main() {
  std::vector<double> test{1, 2, 3, 4}; 
  std::cout << evaluate(test, 5.0) << std::endl;
}    

你错过了一些typename s让编译器知道表达式,如p::value_type实际上是类型