Odwoływanie się do składowej obiektu dynamicznego w liście

0

Cześć wszystkim!

Mam następujący problem: nie potrafię odwołać się do składowej obiektu będącego dowolnym elementem listy (standardowa lista dwukierunkowa z biblioteki <list>). Krótko mówiąc, tworzę listę wskaźników klasy "krawedz" (gdyż każdy obiekt musi być alokowany dynamicznie), następnie dynamicznie tworzę w niej obiekty tejże klasy i dalej nie wiem w jaki sposób mogę uzyskać dostęp do składowych tych obiektów.

#include <list>
#include <iostream>

using namespace std;

class krawedz
{
public:
	int A;
	int B;
	krawedz(int, int);
};

krawedz::krawedz(int wierz1, int wierz2)
{
	A=wierz1;
	B=wierz2;
}

int main()
{
list<krawedz*>lista_krawedzi;
    lista_krawedzi.push_back(new krawedz(12,14));
    lista_krawedzi.push_back(new krawedz(13,15));
    list<krawedz*>::iterator iter=lista_krawedzi.begin();
    cout << "Pierwszy element listy: skladowa A=" << lista_krawedzi.front()->A << endl;
    cout << "Drugi element listy: skladowa A=" << (lista_krawedzi.front()+1)->A << endl;
    cout << "Wyswietlanie pierwszego elementu za pomoca iteratora: skladowa A=" << iter->A;
return 0;
}

Właściwie, do tej pory udało mi się "dobić" do składowych obiektu będącego pierwszym elementem, korzystając z referencji z funkcji "front()". Jak odczytać drugi element listy, a właściwie zmienne składowe obiektu, który tam jest? Oczywiście poza użyciem funkcji back() ;) I drugie pytanie: jak mogę to zrealizować za pomocą iteratora? Za wszelką pomoc z góry dziękuję.

0

for(;iter!=krawedzi.end();++iter) cout<<(**iter).A<<endl;

0

Dzięki za szybką odpowiedź! Oczywiście wszystko pięknie hula :) A tak tylko z ciekawości - czy mógłbyś pokazać jak wyglądałoby alternatywne rozwiązanie za pomocą wskaźników i referencji?

0

Podwójny wskaźnik czyli prosisz o jakieś 6 wariantów ...
Sam sobie rozpisz iter to wskaźnik (można tak to sobie wyobrazić) na dodaną rzecz czyli w tym przypadku dodano krawedz* więc jest typu krawedz**

0

To znaczy miałem raczej na myśli: jak przekształcić fragment kodu "lista_krawedzi.front()->A", żeby odpowiadał np. drugiemu, a nie pierwszemu elementowi? Czy da się to w ogóle w prosty sposób zrobić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1