【问题标题】:iterator with vector pointer带有向量指针的迭代器
【发布时间】:2012-04-26 00:40:40
【问题描述】:

我创建了一个指针向量

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&lt;Person*&gt;::iterator it;,但也没有运气。

谢谢。

【问题讨论】:

  • 您无法从vector&lt;Person*&gt; 获得vector&lt;Person&gt;::iterator...

标签: c++ vector iterator


【解决方案1】:

迭代器需要和容器的类型相同:

vector<Person>::iterator it;

应该是:

vector<Person*>::iterator it;

【讨论】:

  • +1,it-&gt;getName() 也应该变成(*it)-&gt;getName()
【解决方案2】:
 vector<Person*> *personVec = new vector<Person*>();

这是一个指向人员指针向量的指针

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

您的迭代器声明不正确,您需要一个指向人员指针向量的迭代器

你有一个人 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    相关资源
    最近更新 更多