Ошибка: нет совпадения для оператора []. Сравнивая int с int в списке <int>, - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь сравнить целые числа в списке с целыми числами, но по какой-то причине я получаю ошибку: нет совпадения для оператора [], и я не понимаю, почему. Я упростил то, что я пытался сделать ниже, но это все та же основная проблема, которую я имею. Вот код:

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;
   }

Почему я получаю эту ошибку и как сравнить целые числа с целыми числами в списке?

1 Ответ

3 голосов
/ 07 октября 2019

Есть две проблемы:

  1. std::list не имеет операции индексации.
  2. Цикл, основанный на диапазоне, перебирает элементы контейнера , а не его индексы.

Вы почти никогда не должны использовать std::list - std::vector почти всегда является подходящей альтернативой - и ваш цикл должен выглядеть следующим образом:

for (auto& element: myBinaryList){
    if (element == 1){ 
        element = 0;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...