С ++ итераторы ломаются в Visual C ++, но не в GNU g ++ - PullRequest
0 голосов
/ 17 сентября 2009

Я пытаюсь узнать больше о контейнерах списков и о том, как их перебирать, но кажется, что у g ++ с этим нет проблем, но Visual Studio C ++ суетится везде!

#include <iostream>
#include <string>
#include <list>

using namespace std;

int main(){

   list <string> data;
   list <int>::iterator it;

   data.push_back("fee");
   data.push_back("fi");
   data.push_back("foo");
   data.push_back("fum");

   // something breaks back here ?!?!
  for(it=data.begin(); it!=data.end(); it++){
     cout << *it << endl;
  }

  return 0;

}

Ответы [ 3 ]

17 голосов
/ 17 сентября 2009

Попробуйте

list<string>::iterator

вместо

list<int>::iterator.
11 голосов
/ 17 сентября 2009

GCC должен "рвать" здесь тоже (это для меня). Вы назначаете list<string>::iterator для list<int>::iterator, которые бывают разных типов.

1 голос
/ 19 февраля 2012

Вот почему в C ++ 11 был введен автоматический тип данных.

См. Пример ниже;

   // C++ 11 auto
  for (auto it = data.begin(); it != data.end(); it++) // it is list<string>::iterator
  { 
     cout << *it << endl; 
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...