c++ - 迭代某个类的 vector 列表 (C++)

标签 c++ list vector iterator containers

谁能帮我解释为什么这段代码在内循环中出现段错误?

我正在尝试迭代某个类 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/

相关文章:

c++ - 我的矩阵类在初始化时崩溃

c++ - QT从信号返回值?

c++ - while(fin>>a) 或 while(fin.eof()) 将不起作用。在第一种情况下,fin 流变量一直将文件中的最后一个字符作为输入

c++ - 关于 C++ 中的析构函数;

c++ - v8 javascript API 文档可在 c 中工作

C++ 使用 vector 从 Tic-Tac-Toe 树中获取所有可能的 child

c# - 如何使用 LINQ 从 List<Price> 中获取最接近的数字?

python - 如何在 Python 中获取列表并填充值并放入数据框和过滤器中?

java - JAVA中将列表放入数组

c++ - 查找 vector 中的最小值