2015-02-28 2 views
0

Я реализую список Adjacency List, и у меня есть struct Node, у которых есть переменная string name, которую я хочу получить/распечатать.Доступ к значению в Vector-> List -> (Node *) -> name

Я пишу этот код в main function:

vector <list<Node*>> mylist(NP); 

vector <list<Node*>>::iterator itr = mylist.begin(); 
int i=0; 
while(i<NP) 
{ 
    Node *temp = new Node(); 
    fin>>temp->name; 
    itr->push_back(temp); 

    itr++; 
    i++; 
} 

itr = mylist.begin(); 
list<Node*>::iterator itr2 = itr->begin(); 
cout<<itr2->name; 

но последняя строка не работает для меня. что мне делать?

+0

Что вы ожидаете 'list :: iterator itr2 = itr-> begin();' выполнить? – TriHard8

+0

Ничего, я пьян. – TriHard8

+0

LOL это нормально. и через эту строку я хочу получить доступ к первому узлу первого «списка» вектора «mylist». : P –

ответ

0

Я думаю, что последняя строка может быть:

vector <list<Node*>> mylist(NP); 

vector <list<Node*>>::iterator itr = mylist.begin(); 
int i=0; 
while(i<NP) 
{ 
    Node *temp = new Node(); 
    fin>>temp->name; 
    itr->push_back(temp); 

    itr++; 
    i++; 
} 
itr = mylist.begin(); 
list<Node*>::iterator itr2 = itr->begin(); 
cout<<(*itr2)->name.c_str(); 
+0

с использованием функции 'c_str()' является избыточным. std :: string знает как '<<' себя – avim

0

itr2 является итератор контейнера Node* с. Чтобы получить поле в Node, вы должны сначала разыменовать itr2 и получить объект Node*, затем вы можете использовать оператор -> и получить поле. Так что эта строка должна работать: cout << (*itr2)->name

Смежные вопросы