我正在尝试将列表中的整数与整数进行比较,但是由于某种原因,我得到了错误: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;
}
}