Commit 2cd4fd28 by Szeberényi Imre

const_iterator

parent e1aecbfc
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
* *
* Generikus tömb iterátorral v3. * Generikus tömb iterátorral v3.
* Előadáson bemutatott kód módosított változata. * Előadáson bemutatott kód módosított változata.
* Interfész jobban hasonlít az std::vector-ra.
* Van konstans iterarora is.
*/ */
#ifndef GEN_ARRAY_ITER3 #ifndef GEN_ARRAY_ITER3
#define GEN_ARRAY_ITER3 #define GEN_ARRAY_ITER3
...@@ -21,6 +23,7 @@ class Array { ...@@ -21,6 +23,7 @@ class Array {
public: public:
/// minden implicit tagfüggvény jó, nem kell átdefiniálni /// minden implicit tagfüggvény jó, nem kell átdefiniálni
class iterator; // elődeklaráció class iterator; // elődeklaráció
class const_iterator; // konstans objektumra hivatkozó iterator elődeklarációja
/// default és konstans értékkel feltöltő konstruktor /// default és konstans értékkel feltöltő konstruktor
/// @param n - méret /// @param n - méret
...@@ -51,6 +54,18 @@ public: ...@@ -51,6 +54,18 @@ public:
return iterator(*this, siz);// ld. iterátor konstruktor return iterator(*this, siz);// ld. iterátor konstruktor
} }
/// létrehoz egy konstans objektumra alkalmazható iterátort és az elejére állítja
/// @return - iterátor az adatsorozat elejére
const_iterator begin() const {
return const_iterator(*this); // ld. iterátor konstruktor
}
/// létrehoz egy iterátort és az utolsó elem után állítja
/// @return - iterátor az adatsorozat végére
const_iterator end() const {
return const_iterator(*this, siz);// ld. iterátor konstruktor
}
/// Elemek tényleges száma /// Elemek tényleges száma
/// @return - ténylegesen tárolt elemek száma /// @return - ténylegesen tárolt elemek száma
size_t size() const { return siz; } size_t size() const { return siz; }
...@@ -134,6 +149,30 @@ public: ...@@ -134,6 +149,30 @@ public:
}; // iterator osztály vége }; // iterator osztály vége
/// const_iterator osztály
/// Visszavezetjük az iterator osztályra.
class const_iterator : public iterator {
public:
/// default konstruktor
const_iterator() {}
/// konstruktor, egy konkrét objektum ix-edik elemére mutat
/// @param a - a konkrét objektum
/// @param ix - ide állítja az indexet
const_iterator(const Array& a, size_t ix = 0)
: iterator(const_cast<Array&>(a), ix) {} /// Kis trükközés a kasztolással...
const T& operator*() const {
return iterator::operator*();
}
/// Szelekció pointerrel (nyil). Címet kell, hogy adjon.
const T* operator->() const {
return &operator*();
}
};
/// Virtuális destruktor. /// Virtuális destruktor.
/// Most nem használjuk, de egy generikus osztály későbbi /// Most nem használjuk, de egy generikus osztály későbbi
/// felhasználási módja kevésbé látszik. /// felhasználási módja kevésbé látszik.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment