为什么矢量迭代器不可取消引用

Why is Vector Iterator not dereferencable?

本文关键字:可取消 引用 不可取 迭代器 为什么      更新时间:2023-10-16

下面的代码无法延迟向量迭代器,但我不知道为什么。我只是简单地遍历2d数组,并将所有值实例化为0。我在哪里迭代到一个无效的位置?

vector<vector<bool>> isduplicate(100);
        for(int i=0;i<isduplicate.size();i++){
            for(int s=0;s<isduplicate.size();s++)
            isduplicate[i][s]=false;
        }

您正在isduplicate上迭代两次。您应该在内部循环中迭代isduplicate[i]

vector<vector<bool>> isduplicate(100);
for(int i=0;i<isduplicate.size();i++){
    for(int s=0;s<isduplicate[i].size();s++)
       isduplicate[i][s]=false;
} 

但是,对于所有的iisduplicate[i]都是空的,因此您不会迭代内部循环中的任何内容。

如果您想要100个bool的100个矢量包含false值,则:

vector<vector<bool>> isduplicate(100, vector<bool>(100, false));

应该这样做。