向量迭代器

2024-03-30

我有以下代码。

vector<IRD>* irds = myotherobj->getIRDs();//gets a pointer to the vector<IRD>
for(vector<IRD>::iterator it = irds->begin(); it < irds->end(); it++)
    {
        IRD* ird = dynamic_cast<IRD*>(it);
        ird->doSomething();
        //this works (*it).doSomething();

    }

这似乎失败了...我只想获取指向向量中每个元素的指针而不使用 (*it)。遍。

  1. 如何获取指向对象的指针?
  2. 当我迭代向量指针 irds 时,我到底迭代了什么?它是每个元素的副本,还是当我说 (*it).doSomething() 时,我正在处理向量中的实际对象,

为什么你想要得到一个指针?

使用参考:

for(vector<IRD>::iterator it = irds->begin(); it != irds->end(); ++it)
{
    IRD & ird = *it;
    ird.doSomething();
}

或者:

for(vector<IRD>::iterator it = irds->begin(); it != irds->end(); ++it)
{
    it->doSomething();
}

另外,正如大家所说,使用!=比较迭代器时,不<。虽然它在这种情况下可以工作,但如果您使用不同的容器,它就会停止工作(这就是迭代器的用途:抽象底层容器)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向量迭代器 的相关文章

随机推荐