Skip to content

Instantly share code, notes, and snippets.

@coldcue
Last active December 16, 2015 21:39
Show Gist options
  • Save coldcue/5501381 to your computer and use it in GitHub Desktop.
Save coldcue/5501381 to your computer and use it in GitHub Desktop.
/*
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