2012-05-24 4 views
3

Я пытаюсь использовать итератор для печати каждого члена набора. Насколько я могу судить по другим ответам stackoverflow, у меня есть правильное форматирование. Когда я запускаю этот код, он правильно выводит, что размер myset равен 3, но он выводит только один раз. Если я раскомментировать строку с * ИТЭРОМ, Visual Studio генерирует исключение времени выполнения о том, что этот «карта/набор итератор не разыменовываемый Любую идею, почемуИспользование итератора для распечатки каждого члена набора

int main() 
{ 
set<int> myset; 
myset.insert(5); 
myset.insert(6); 
myset.insert(7); 
set<int>::iterator iter; 
cout<<myset.size()<<endl; 
int ii=0; 
for(iter=myset.begin(); iter!=myset.end();++iter);{ 
    //cout<<(*iter)<<endl; 
    ii+=1; 
    cout<<ii<<endl; 
} 
return 0; 
} 

ответ

11

Вы в этой строке дополнительного ;:.?

for(iter=myset.begin(); iter!=myset.end();++iter);{ 

Это означает, что тело Петля является на самом деле пуст, и следующие строки выполняются только один раз

Так изменить эту строку на это:.

for(iter=myset.begin(); iter!=myset.end();++iter) { 
+0

Какая версия C++ необходима для этого? – ragerdl

+0

FWIW, я попробовал его с '-std = C++ 11', и он работает. – ragerdl

Смежные вопросы