Wpis z mikrobloga

#naukaprogramowania #cpp

Mam klasę Czasy, w klasie mam prywatny std::vector, tworzę objekt czas, dodaje do niego jakieś 3 przykładowe czasy, i mam mieć możliwość przeglądania wszystkich czasów w taki sposób:

Czasy czas(3);
Czasy::iterator iterator1 = czas.begin();
for(;iterator1 != czas.end(); iterator1++)
std::cout << *iterator1 << std::endl;

Metody begin() oraz end() już mam.
Jak się za to zabrać? Muszę zrobić zagnieżdżoną klasę iterator w klasie Czasy?
  • 8
jeśli vector jest private, do niego dodajesz trzy przykładowe czasy to aby móc się do niego odwołać można napisać fukcje np.

const std::vector &getelement(){return myvector}

dzieki niej bedziesz mogl chodzic po wektorze range forem np.:

for(const auto& item : mojeczasy.getelement())
std::cout<
@damienbudzik: jeśli chodzi o przypadek, gdy masz pole prywatne, a chcesz używac iteratora na vectorze tak jakby twoja klasa była wektorem, to stanowczo odradzam takie zachowanie. Jak i tak wszyscy mogą się iterować po twoim wektorze, to po co robić go prywatnym? W taki sposób tylko komplikujesz kod nic nie zyskując w zamian.