Cześć. Mam problem z kontenerem. Chce wywołać funkcje znajdującą liczbę minimalna.(Funkcja min2). Umieszczam kod poniżej. Niestety wywala mi błąd odnośnie konwersji Konten<double>::iterator na double....
#ifndef KONTEN_H
#define KONTEN_h
#include <cassert>
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
template<typename T>
class Konten
{
enum { ssize = 100 };
T stack[ssize];
int top;
public:
Konten() : top(0) {}
void push(T i) {
assert(top < ssize); stack[top++] = i;
};
T pop() {
assert(top > 0); return stack[--top];
};
int rozmiar() { return top; };
T min2(T start, T end)
{
double min = *start;
while (start != end)
{
if (*start < min)
min = *start;
start++;
}
return min;
}
class iterator {
Konten& s;
int index;
public:
iterator(Konten& is) : s(is), index(0) {};
iterator(Konten& is, bool) : s(is), index(s.top) {};
T operator++() { // Prefix
assert(index < s.top);
return s.stack[++index];
};
T operator++(int) { // Postfix
assert(index < s.top);
return s.stack[index++];
};
T& operator*() const { return s.stack[index]; };
iterator& operator=(const iterator& rv) {
s = rv.s;
index = rv.index;
return *this;
}
T operator!=(const iterator& rv) const {
return index != rv.index;
}
};
iterator begin() { return iterator(*this); };
iterator end() { return iterator(*this, true); };
friend class iterator;
};
#endif
double randdouble()
{
return rand() / (double(RAND_MAX) +1) ;
}
int main()
{
srand(time(NULL));
Konten<double> is;
for (int i = 0; i < 10; i++)
{
double liczba = rand() %10 + randdouble();
is.push(liczba);
}
Konten<double>::iterator it=is.begin();
while (it != is.end()) // nie musimy znać rozmiaru stosu..
cout << setprecision(2)<<it++<<endl;
double min = is.min2(is.begin(),is.end());
return 0;
}
!=
, sorry!