谁能帮我解释为什么这段代码在内循环中出现段错误?
我正在尝试迭代某个类 block 的 vector 列表。
class chain
{
list<vector<Block*>* >* _blockChain;
}
Chain* someChain = new Chain();
for(list<vector<Block*>*>::iterator listIter = someChain->getChain()->end() ;
listIter != someChain->getChain()->begin(); listIter--)
{
for(vector<Block*>::iterator it = (*listIter)->begin();
it != (*listIter)->end() ; it++)
{
//do something
}
}
最佳答案
如果要反向遍历列表,请使用 reverse_iterator:
for(list<vector<Block*>*>::reverse_iterator listIter = someChain->getChain()->rbegin();
listIter != someChain->getChain()->rend(); ++listIter)
使用最新的编译器,您可以将其压缩一点:
for (auto listIter = someChain->getChain()->rbegin();
listIter != someChain->getChain()->rend(); ++listIter)
就是说,我同意@Mike Seymour 的观点:您方式 使用了太多指针。举一个非常明显的例子,几乎没有理由使用指向 vector 的指针(因为 vector 本身只不过是指向数据的指针的包装,还有一些额外的数据用于记录有多少数据 vector )。
关于c++ - 迭代某个类的 vector 列表 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30307924/