Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ > Re: template er...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 6 of 8 Topic 45888 of 47032
Post > Topic >>

Re: template error with iterator

by Paavo Helde <nobody@[EMAIL PROTECTED] > May 12, 2008 at 06:57 PM

utab <umut.tabak@[EMAIL PROTECTED]
> wrote in news:50129083-18fd-4099-9ba7-
586bb9df72e2@[EMAIL PROTECTED]
> Dear all,
> 
> I was experimenting with a template taking two iterators for the range
> of
> a vector.(Perhaps, it is sth simple and I am missing it because it is
> a
> late hour.) I ran into problems in the compile phase , the code is
> below:
> 
> #include <iostream>
> #include <algorithm>
> #include <stdexcept>
> #include <vector>
> 
> using std::domain_error;
> using std::sort;
> using std::vector;
> 
> template <class T, class Ran>
> T median(Ran b, Ran e)
> {

You are passing in only Ran arguments, there is no way the compiler could 
deduce the T template parameter.

>   typedef typename vector<T>::size_type vec_sz;
> 
>   vec_sz size = (e-b)/sizeof(T);
>   if (size == 0)
>     throw domain_error("median of an empty vector");
> 
>   sort(b, e);
> 
>   vec_sz mid = size/2;
> 
>   return size % 2 == 0 ? (b[mid] + b[mid-1]) / 2 : b[mid];
> }
> 
> int main()
> {
>   vector<double> vec;
>   for(int i=0;i!=10;++i)
>     vec.push_back(i);
>   std::cout << median(vec.begin(), vec.end()) << std::endl;

... so you have to specify it yourself:

   std::cout << median<double>(vec.begin(), vec.end()) << std::endl;

... or throw away the redundant template parameter:

template <class Ran>
typename Ran::value_type median(Ran b, Ran e)
{
  typedef typename vector<Ran::value_type>::size_type vec_sz;

  vec_sz size = (e-b)/sizeof(Ran::value_type);
  if (size == 0)
    throw domain_error("median of an empty vector");

....

hth
Paavo
 




 8 Posts in Topic:
template error with iterator
utab <umut.tabak@[EMAI  2008-05-12 16:37:07 
Re: template error with iterator
utab <umut.tabak@[EMAI  2008-05-12 16:40:04 
Re: template error with iterator
tragomaskhalos <dave.d  2008-05-12 16:47:35 
Re: template error with iterator
utab <umut.tabak@[EMAI  2008-05-12 16:51:26 
Re: template error with iterator
acehreli@[EMAIL PROTECTED  2008-05-12 16:52:42 
Re: template error with iterator
Paavo Helde <nobody@[E  2008-05-12 18:57:09 
Re: template error with iterator
Greg Herlihy <greghe@[  2008-05-12 16:58:41 
Re: template error with iterator
James Kanze <james.kan  2008-05-13 02:26:04 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Fri Jul 25 21:20:18 CDT 2008.