38 template <
class numero>
    39 class vectorZ : 
public std::vector<numero>
    42     typedef std::vector<numero> vector_numero;
    47     typedef typename std::vector<numero>::size_type size_type;
    48     typedef std::list<numero> lst_numero;
    50     vectorZ(
void) : vector_numero() {}
    51     vectorZ(size_type n,
const numero &value = numero()) : vector_numero(n,value) {}
    54     vectorZ(
const size_t &sz,
const numero arr[]) : vector_numero(arr,arr+sz){}
    55     template <
class InputIterator>
    56     vectorZ(InputIterator b,InputIterator e);
    59         vector_numero::operator=(otro);
    81         vectorZ::operator =(v1);
    86         vectorZ::operator=(v1);
    89     void Prod(
const numero &n);
    90     void PutSuma(size_type i,
const numero &n)
    92     void PutResta(size_type i,
const numero &n)
    94     void PutProd(size_type i,
const numero &n)
    96     void swap(size_type n1,size_type n2)
    97       { std::swap((*
this)[n1],(*
this)[n2]); }
    98     long Busca(
const numero &n) 
const;
   100     bool Nulos(
const numero &tol= numero());
   101     void Con(size_type n1,size_type n2,
const numero &n)
   103         fill(&(vector_numero::operator [](n1)),&(vector_numero::operator [](n2)),n);
   104         vector_numero::operator [](n2)= n;
   106     void Con(size_type n1,
const numero &n)
   107       { fill(&(vector_numero::operator [](n1)),this->end(),n); }      
   108     void Con(
const numero &n)
   109       { fill(this->begin(),this->end(),n); }
   110     numero Sumatorio( size_type i, size_type j) 
const   112       { 
return accumulate(this->begin()+ i,this->begin() + j,numero()); }
   113     numero Productorio(size_type i, size_type j) 
const   115       { 
return accumulate(this->begin()+ i+1,this->begin() + j,*(this->begin()+i),std::multiplies<numero>()); }
   125         typename vectorZ<numero>::size_type mx= std::max(v1.size(),v2.size());
   133         typename vectorZ<numero>::size_type mx= std::max(v1.size(),v2.size());
   149       { 
return ((
const vector_numero &) x == (
const vector_numero &) y); }
   153 template <
class numero> 
template<
class InputIterator>
   155   : vector_numero(b,e) {}
   157 template <
class numero>
   161     typedef typename lst_numero::const_iterator c_iterator;
   162     for(c_iterator i=ln.begin();i!=ln.end();i++)
   163       { (*this)[j]= *i; j++; }
   166 template <
class numero>
   174 template <
class numero>
   177     size_type sz= this->size();
   178     for(size_type i=0;i<sz;i++)
   179       if ((*
this)[i] == n) 
return i;
   183 template <
class numero>
   186     size_type sz= this->size();
   187     for(size_type i= 0;i<sz;i++)
   188       (*
this)[i] = -(*this)[i];
   190 template <
class numero>
   193     size_type sz= this->size();
   194     for(size_type i= 0;i<sz;i++)
   195       if(Abs((*
this)[i])>tol) 
return false;
   199 template <
class numero>
   202     size_type sz= v.size();  
   203     for(size_type i=0;i<sz;i++) PutSuma(i,v[i]);
   206 template <
class numero>
   209     size_type sz= v.size();
   210     for(size_type i=0;i<sz;i++) PutResta(i,v[i]);
   213 template <
class numero>
   216     size_type sz= this->size();      
   217     for(size_type i= 0;i<sz;i++)
   221 template <
class numero>
   227     for(
size_t i=0;i<j;i++) left[i]= (*
this)[i];
   231 template <
class numero>
   235     size_type sz= this->size();
   237     size_type szr= sz-j-1;
   239     for(size_type i=0;i<szr;i++) right[i]= (*
this)[i+j+1];
   243 template <
class numero>
   250     for(size_type k=0;k<sz;k++) mid[k]= (*
this)[k+i+1];
   254 template <
class numero>
   257     if (j == 0) 
return Right(j);
   258     if (j == (this->size() - 1)) 
return Left(j);
   259     return Cat(Left(j),Right(j));    
   262 template <
class numero>
   270     if (j<this->size()) s= Cat(s,Right(j));
   274 template <
class numero>
   278     unsigned long c= this->size(),sz=v.size();
   279     for(
unsigned long i=0;i<sz;i++)
   280       if (Busca(v[i]) < 0) c++;
   284 template <
class numero>
   285 std::ostream &operator << (std::ostream &os,const vectorZ<numero> &n)
   288     typedef typename vectorZ<numero>::size_type sz_type;
   289     sz_type sz= n.size();
   291     for(sz_type i= 1;i<sz;i++) os << 
',' << n[i];
   296 template <
class numero>
   300     typename vectorZ<numero>::lst_numero ln;
   303     if(c != 
'[') is.putback(c);
   318 template <
class numero>
   321     size_t sz1= v1.size(), sz2= v2.size();
   322     size_t szc= sz1 + sz2;
   324     typedef typename vectorZ<numero>::size_type sz_type;
   325     for(sz_type i=0;i<sz1;i++)
   327     for(sz_type i=0;i<sz2;i++)