2012-05-24 60 views
3

我想用迭代器打印出集合的每個成員。據我可以告訴從其他stackoverflow答案,我有正確的格式。當我運行這個代碼時,它正確地輸出myset的大小是3,但它只輸出ii一次。如果我取消與* ITER行,Visual Studio中拋出一個運行時異常說是「圖/集迭代器不是dereferencable任何想法,爲什麼使用迭代器打印出集合的每個成員

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