为什么Vector Iterator不能解除引用?

时间:2012-03-26 01:03:31

标签: c++

获取向量迭代器不能用于下面的代码,但我不明白为什么。我只是在迭代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;
        }

1 个答案:

答案 0 :(得分:4)

您正在迭代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;
} 

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

如果你想要的是100个包含bool值的100 false个向量,那么:

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

应该这样做。