İnsanların listesini temsil eden bir sınıfım var.
class AddressBook
{
public:
AddressBook();
private:
std::vector<People> people;
}
Müşterilerin insan vektörünü tekrar etmelerine izin vermek istiyorum. Sahip olduğum ilk düşünce basitti:
std::vector<People> & getPeople { return people; }
Ancak, uygulama detaylarını müşteriye sızdırmak istemiyorum . Vektör değiştirilirken bazı değişmezleri korumak isteyebilirim ve uygulamayı sızdırdığımda bu değişmezler üzerindeki kontrolümü kaybedebilirim.
İnternal sızıntı yapmadan yinelemeye izin vermenin en iyi yolu nedir?
begin()
ve end()
tehlikelidir, çünkü (1) bu türler, birinin a gibi başka bir kaba geçmesini önleyen vektör yineleyicilerdir (sınıflar) set
. (2) Vektör değiştirilirse (örneğin, büyümüş veya silinmiş bazı öğeler), vektör yineleyicilerin bazıları veya tamamı geçersiz olabilir.