2012-04-26 83 views
1

我創建的指針的向量迭代器載體指針

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

人包括:

getName(); 
getAge(); 

如果我嘗試使用迭代這是行不通的。這裏是我如何使用它:

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

我試過vector<Person*>::iterator it;但沒有運氣。

謝謝。

+2

你不能矢量從'vector '得到一個'vector :: iterator' ... – ildjarn 2012-04-26 00:42:29

回答

9

迭代器需要是相同的類型的容器:

vector<Person>::iterator it; 

應該是:

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

+1,也是'it-> getName()'應該成爲'(* it) - > getName()'。 – 2012-04-26 00:44:07

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

這是一個指向人的指針的矢量

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

您的iter聲明不正確y您需要一個國際熱核實驗堆,以人指針的向量

你有一個國際熱核實驗堆到的Person

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/