C++ 从多项式类型到数字类型

C++ 从多项式类型到数字类型,c++,c++11,vector,C++,C++11,Vector,我正在为多项式编写一些模板函数。 他们将输入一个多项式,例如 template<typename polynomial> auto evaluate(polynomial const& pol, polynomial::value_type x ) -> dectype(pol[0]) { // return Horner-Ruffini }; 模板 自动求值(多项式常数&pol,多项式::值_类型x)->dectype(pol[0]) { //返回霍纳·鲁菲

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

template<typename polynomial>
auto evaluate(polynomial const& pol, polynomial::value_type x ) -> dectype(pol[0])
{
    // return Horner-Ruffini
};
模板
自动求值(多项式常数&pol,多项式::值_类型x)->dectype(pol[0])
{
//返回霍纳·鲁菲尼
};
多项式
类可以是
std::vector
,在这种情况下,我希望
x
类型为
T
,或者其他自定义多项式类

定义此模板化函数的正确方法是什么。 对于
多项式=std::vector
的情况,我很难正确地编写它


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

您可能应该进一步考虑
p
类型的约束(即,假设
值\u 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 p::value_type evaluate(p const&pol,typename p::value_type x){
typename p::value_type result=0;
用于(const auto&v:pol){
结果=结果*x+v;
}
返回结果;
}
int main(){
std::病媒测试{1,2,3,4};

std::cout您可能应该更多地考虑类型
p
的约束(即,假设
值\u 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 p::value_type evaluate(p const&pol,typename p::value_type x){
typename p::value_type result=0;
用于(const auto&v:pol){
结果=结果*x+v;
}
返回结果;
}
int main(){
std::病媒测试{1,2,3,4};

std::cout
typename多项式::value\u type
typename多项式::value\u type
。我明白了。这就是Jarod42所说的,也是我遇到麻烦的原因之一。谢谢。我明白了。这就是Jarod42所说的,也是我遇到麻烦的原因之一。谢谢。