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)的情况下获取向量中每个元素的指针.遍.
你为什么想要一个指针?
使用参考:
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)
另外,正如大家所说,!=在比较迭代器时使用,而不是<.虽然它在这种情况下可以正常工作,但是如果你使用不同的容器(它就是迭代器的用途:抽象底层容器)它将停止工作.