2012-04-26 5 views
1

Я создал вектор указателейитератора с векторным указателем

vector<Person*> *personVec = new vector<Person*>(); 

Person содержит:

getName(); 
getAge(); 

Если я пытаюсь использовать итератор он не работает .. Вот как я использую его :

vector<Person>::iterator it; 
    for(it = personVec->begin() ; 
     it != personVec->end() ; 
     ++it) 
    { 
     cout << it->getName() << endl; 
    } 

Я попытался vector<Person*>::iterator it;, но не повезло с этим тоже.

Спасибо.

+2

Вы не можете get a vector :: iterator' из 'vector ' ... – ildjarn

ответ

9

Итератор должен быть того же типа, как контейнер:

vector<Person>::iterator it; 

должно быть:

vector<Person*>::iterator it; 
+7

+1, также 'it-> getName()' должен стать '(* it) -> getName()'. –

4
vector<Person*> *personVec = new vector<Person*>(); 

это указатель на вектор человека указателей

vector<Person>::iterator it; 
for(it = personVec->begin() ; it != personVec->end() ; ++it) 
{ 
    cout << it->getName() << endl; 
} 

ваш iter объявляет неверный у вам нужно ITER вектору человека указателей

Вы ITER вектору человек s

vector<Person*>::iterator it; 
for(it = personVec->begin() ; it != personVec->end() ; ++it) 
{ 
    cout << (*it)->getName() << endl; 
} 

http://www.cplusplus.com/reference/std/iterator/

и

http://www.cplusplus.com/reference/stl/vector/begin/

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