Last active
December 16, 2015 21:39
-
-
Save coldcue/5501381 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Tételezze fel, hogy rendelkezésére áll egy verem-tulajdonságokkal rendelkező generikus tároló (Stack)! A tároló a szokásos veremműveletekkel rendelkezik (push, pop, top, empty), és csak default konstruktora van. | |
Ezen osztály felhasználásával készítsen egy véges méretű generikus vermet (MyStack)! | |
A maximális méretet a konstruktorban lehessen megadni, amelynek alapértelmezett értéke legyen 100! | |
A MyStack osztály a Stack osztállyal teljesen azonos módon viselkedjen, kivéve akkor, amikor eléri a maximális méretét. | |
Ekkor dobjon std::out_of_range hibát! | |
*/ | |
template <class T> | |
class MyStack : public Stack<T> | |
{ | |
size_t siz; | |
size_t n; | |
public: | |
MyStack(size_t siz = 100) : Stack(), siz(siz), n(0) {}; | |
void push(T obj){ | |
if(n+1>siz) throw std::out_of_range(); | |
n++; | |
Stack<T>::push(obj); | |
} | |
void pop(){ | |
n--; | |
Stack<T>::pop(); | |
} | |
virtual ~MyStack() {}; | |
}; | |
/* | |
Írjon függvénysablont (myunique), ami az std::unique sablonhoz hasonlóan elhagyja egy soroztból az egymás utáni ismétlődéseket! | |
A függvény első két paramétere két iterátor (Forwarditerator) ami kijelöli a jobbról nyílt intervallum kezdetét és végét, a 3. paramétere egy predikátumfüggvény (kétparaméteres), amivel az elemek egyezősége tesztelhető. | |
A függvény visszatérési értéke egy iterator, ami a módosított sorozat végét jelöli ki. | |
Amennyiben helyesen oldja meg a feladatot, akkor az alábbi kódrészlet a következőt írja ki: 1,2,3,17,3 | |
using namespace std; | |
int v[]={1,2,2,3,3,17,3}; | |
ostream_iterator<int> out(cout,","); | |
copy (v, myunique(v, v+7,std::equal_to<int>()),out); | |
*/ | |
template <class I, class S> I myunique(I first, I last, S pred) | |
{ | |
if(first==last) return last; | |
I result = first; | |
while(++first != last) | |
{ | |
if (!pred(*result,*first)) | |
*(++result)=*first; | |
} | |
return ++result; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment