2012-04-26 65 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/