On May 13, 1:37 am, utab <umut.ta...@[EMAIL PROTECTED]
> wrote:
> 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)
> {
> 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;
> return 0;
>
> }
>
> I get
>
> 83.cc: In function 'int main()':
> 83.cc:38: error: no matching function for call to
> 'median(__gnu_cxx::__normal_iterator<double*, std::vector<double,
> std::allocator<double> > >, __gnu_cxx::__normal_iterator<double*,
> std::vector<double, std::allocator<double> > >)'
>
> I am supplying the median function with iterators by using the begin
> and
> end member functions of the vector. However, I get a type mismatch
> error
> on iterators I guess. Could you clarify the problem for me?
>
> Rgds,
>
> --
> Umut
Forgot to tell that I use g++ 4.1.2


|