Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

lista struktur

Ostatnio zmodyfikowano 2015-03-22 21:15
Autor Wiadomość
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:
C/C++
#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.
P-128941
pekfos
» 2015-03-22 16:07:33
A jaki efekt chcesz uzyskać?
P-128943
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?
P-128947
Lora
» 2015-03-22 16:22:03
Ale wiesz, że tworzysz tablicę list?
P-128948
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>.
P-128949
Lora
» 2015-03-22 16:37:28
Jeśli dobrze rozumiem, chcesz stworzyć jedną listę przechowującą obiekty vertex.
C/C++
list < vertex > graph;
vertex vert;
vert.kolor = 0;
graph.push_front( vert );
P-128951
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ę
P-128952
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:
C/C++
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 [].
P-128953
« 1 » 2
  Strona 1 z 2 Następna strona