矢量迭代器

use*_*879 0 c++ iterator vector

我有以下代码.

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();

    }
Run Code Online (Sandbox Code Playgroud)

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

  1. 如何获得指向对象的指针?
  2. 当我迭代向量指针irds时,我究竟在迭代什么?它是每个元素的副本,还是当我说(*it).doSomething()时,我正在使用向量中的实际对象,

Eti*_*tel 5

你为什么想要一个指针?

使用参考:

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

或者:

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

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