我正在尝试将列表中的整数与整数进行比较,但是由于某种原因,我得到了错误:operator []不匹配,我也不明白为什么。我简化了下面我一直在尝试做的事情,但这仍然是我遇到的核心问题。这是代码:

int main(){
    list<int> myBinaryList;
    int count;
    for (count = 0; count < 4, count++){
    myBinaryList.push_back(1)
    }
    //now I should have a list that looks like: (1, 1, 1, 1)

    for (auto const& i:myBinaryList){
        if (myBinaryList[i]==1){ //it's on this row that I will get the error
        myBinaryList[i]=0;
        }
    }

   return 0;
   }


为什么会出现此错误?如何将整数与列表中的整数进行比较?

最佳答案

有两个问题:


std::list没有索引操作。
基于范围的循环遍历容器的元素,而不是其索引。


您几乎应该永远不要使用std::list-std::vector几乎总是合适的替代方法-并且您的循环应如下所示:

for (auto& element: myBinaryList){
    if (element == 1){
        element = 0;
    }
}

08-16 04:20