Ho una classe che rappresenta un elenco di persone.
class AddressBook
{
public:
AddressBook();
private:
std::vector<People> people;
}
Voglio consentire ai clienti di scorrere il vettore delle persone. Il primo pensiero che ho avuto è stato semplicemente:
std::vector<People> & getPeople { return people; }
Tuttavia, non voglio divulgare i dettagli di implementazione al client . Potrei voler mantenere determinati invarianti quando il vettore viene modificato, e perdo l'implementazione, perdo il controllo su questi invarianti.
Qual è il modo migliore per consentire l'iterazione senza perdere le parti interne?