Sztywny Temat założony przez niniejszego użytkownika |
lista struktur » 2015-03-22 15:59:58 Witam, jest to mój pierwszy temat a zarazem post na tym forum. Może zanim przedstawię swój problem pokażę kod źródłowy programu: #include <iostream> #include <list>
using namespace std;
struct vertex { int waga; int kolor; int odleglosc; int rodzic; };
int main() { cout << "Ile wierzcholkow w grafie? "; int rozmiar; cin >> rozmiar; list < vertex > graph[ rozmiar ]; graph[ 1 ].kolor = 0; cout << graph[ 1 ].kolor; return 0; }
Chodzi o to, że nie wiem jak w liście struktur modyfikować atrybuty struktury vertex. Dając kropkę po "graph" kompilator wyrzuca błąd, mówiący, że w klasie "list" nie ma metody/atrybutu o nazwie numer, co jest oczywiście prawdą. Odwołując się w ten sposób odwołuję się nie do "vertex" tylko do "list". Chciałbym ten problem rozwiązać tak, aby nie tworzyć własnej implementacji listy. |
|
pekfos |
» 2015-03-22 16:07:33 A jaki efekt chcesz uzyskać? |
|
Sztywny Temat założony przez niniejszego użytkownika |
» 2015-03-22 16:16:13 Efekt? Chce by działało w taki sposób, że: korzystam z listy struktur i mogę bezpośrednio np. w pętli for modyfikować atrybuty obiektu vertex. Głównie tą własną strukturę chcę wykorzystać przy algorytmach np.: przeszukiwanie wszerz, etc... Jak już pisałem problem jest w tym, że odwołuje się do listy a nie do struktury. Mam nadzieję, że wystarczająco sprecyzowałem, tak? |
|
Lora |
» 2015-03-22 16:22:03 Ale wiesz, że tworzysz tablicę list? |
|
Sztywny Temat założony przez niniejszego użytkownika |
» 2015-03-22 16:31:13 Czyli aby to działało muszę osobno zadeklarować tablicę obiektów typu vertex, a potem metodą push_back() dodać vertex do określonej listy, dobrze myślę?
EDIT: Wieczorem podeślę rozwiązanie do oceny
EDIT2: Ale, żeby umieszczać na liście te elementy to i tak musi ona mieć typ przechowywanych danych <vertex>. |
|
Lora |
» 2015-03-22 16:37:28 Jeśli dobrze rozumiem, chcesz stworzyć jedną listę przechowującą obiekty vertex. list < vertex > graph; vertex vert; vert.kolor = 0; graph.push_front( vert );
|
|
Sztywny Temat założony przez niniejszego użytkownika |
» 2015-03-22 16:41:23 Nie jedną listę. List musi być tyle ile jest obiektów typu vertex. Chcę stworzyć graf za pomocą reprezentacji list sąsiedztwa. Z czego wierzchołek musi mieć więcej niż jeden atrybut, dlatego stworzyłem nową strukturę |
|
Lora |
» 2015-03-22 16:45:58 Nie bardzo rozumiem co chcesz robić, ale ten kod, który masz nie działa bo odwołujesz się do listy z tablicy list, a nie do obiektu w liście. Tak powinno działać, zakładając, że tablica ma co najmniej dwa elementy: int main() { cout << "Ile wierzcholkow w grafie? "; int rozmiar; cin >> rozmiar; list < vertex > graph[ rozmiar ]; vertex vert; graph[ 1 ].push_front( vert ); graph[ 1 ].front().kolor = 0; cout << graph[ 1 ].front().kolor; return 0; }
btw nie możesz się do elementu listu odwoływać za pomocą operatora []. |
|
« 1 » 2 |