Per illustrare, diciamo che ho un contenitore personalizzato rispetto all'uso STL std::vector
internamente. Se digitando a my_container::iterator
, il dereferenziamento dell'iteratore restituirà un valore char*
. Tuttavia, il mio contenitore personalizzato dovrebbe nascondere i suoi interni, nel senso che voglio un dereferenziamento per restituire un char
.Qual è l'approccio migliore per il wrapping di un container STL in un iteratore personalizzato?
Come può essere realizzato?
class my_container {
public:
typedef std::vector<char*> vector;
private:
vector vec_;
};
UPDATE:char*
è un esempio. Non significa una stringa C; l'esempio sarebbe più chiaro con uno int
.
Inoltre, vorrei utilizzare std::forward_iterator_tag
e std::iterator
in quanto sembra un approccio più standard/corrente.
Potrebbe essere necessario implementare il proprio iteratore, quella che scorre su due livelli ('char *' del iteratore reale, e 'char' per il proprio operatore dereference). –
Da dove proviene 'char', intendi iterare su ciascuna sottostringa all'interno del vettore o semplicemente dereferenziare due volte? – Barry