多项式求值

该博客展示了一个Polynomial类模板的代码实现,它继承自vector容器。类中包含构造函数用于初始化,还实现了秦九韶算法的求值函数,可根据不同情况计算多项式的值,代码使用了迭代器和模板技术。
// 版权所有(C) 梁意, 2004 // 最后修改: 2004.7.杭州 
#ifndef Polynomial_HEADER 
#define Polynomial_HEADER 
#include<vector> 
using namespace std; 
template<typename T,typename Container=vector<T> > 
class Polynomial: public Container
{ 
public: 
   Polynomial() { } 
   Polynomial(const T *pT,size_t N)
   { 
      copy(pT,pT+N,insert_iterator<Polynomial<T,Container> >(*this,begin()));
   } 
   Polynomial(const Polynomial<T,Container> &other)
   {
      copy(other.begin(),other.end(),insert_iterator<Polynomial<T,Container> >(*this,begin()));
   }
   template<typename _In> 
   inline _In QinJiuShao_evaluate(_In x,_In identity)//identity 为单位元,如: 整数1、浮点数1.0、单位矩阵 
   {
      size_t N=size();
      if(N==0) return identity; 
      iterator iter=begin(); 
      if(N==1) return *iter; 
      erator iter2=end();
      _In Res=(*iter)*x; 
      iter++; iter2--; 
      for(;iter!=iter2;iter++) 
      { 
         Res=(Res+(*iter)*identity)*x; 
      } 
      return Res+(*iter2)*identity; 
   } 
   template<typename _In> 
   inline  _In QinJiuShao_evaluate(_In x) //这个更快
   { 
   size_t N=size(); 
   if(N==0) return 1.0; 
   iterator iter=begin(); 
   if(N==1) return *iter; 
   iterator iter2=end(); 
   _In Res=(*iter)*x; 
   iter2--; 
   iter++; 
   for(;iter!=iter2;iter++)
   { 
      Res=(Res+(*iter))*x; 
   } 
   return Res+(*iter2); 
   } 
}; 
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值