Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Maksymalna
- pojemność kontenera powinna być podawana każdorazowo w momencie jego konkretyzacji.
- Kontener powinien mieć swój iterator (np. taki jak na slajdzie 295, wykł. 10). Następnie
- wykorzystaj istnienie nowego operatora dzielenia oraz iteratora kontenera aby napisać
- funkcję-algorytm zwracającą wartość średnią ze wszystkich przechowywanych elementów*/
- #include<iostream>
- #include<assert.h>
- template <typename T>
- class IntStack {
- enum { ssize = 100 };
- T stack[ssize];
- int top;
- public:
- IntStack() : top(0) {}
- void push(const T& i) {
- assert(top < ssize); stack[top++] = i;
- }
- T pop() {
- assert(top > 0); return stack[--top];
- }
- class iterator {
- IntStack& s;
- int index;
- public:
- iterator(IntStack& is) : s(is), index(0) {}
- iterator(IntStack& is, bool) : s(is), index(s.top) {}
- int operator++() { // Prefix
- assert(index < s.top);
- return s.stack[++index];
- }
- int operator++(int) { // Postfix
- assert(index < s.top);
- return s.stack[index++];
- }
- bool operator==(const iterator& rv) const {
- return index == rv.index;
- }
- bool operator!=(const iterator& rv) const {
- return index != rv.index;
- }
- };
- iterator begin() { return iterator(*this); }
- iterator end() { return iterator(*this, true);}
- friend class iterator;
- };
- int main(){
- /*IntStack<int> is;
- // zapełniamy stos wartościami
- for(int i = 0; i < 20; i++)
- is.push(i);
- // przemieszczamy się po stosie za pomocą iteratora:
- IntStack<int>::iterator it = is.begin();
- while(it != is.end()) // nie musimy znać rozmiaru stosu..
- printf("%i\n",it++);*/
- float a=5.4,b=6.5,c=2.3;
- IntStack<float>wsk;
- wsk.push(a);
- wsk.push(b);
- wsk.push(c);
- IntStack<float>::iterator cos=wsk.begin();
- while(cos!=wsk.end())
- printf("%i\n",cos++);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement