2013-06-28 40 views
0

繼續到this問題我試圖訪問一個地圖。但是我收到了分段錯誤。下面是我的代碼:訪問地圖的分段錯誤C++

typedef multimap<string, vector<string> > mos_map; 
typedef multimap<string, vector<string> >::iterator mos_map_it; 

int main() 
{ 

mos_map mos; 
mos_map_it it; 

vector<string> v1; 

v1.push_back("a"); 
v1.push_back("b"); 
v1.push_back("c"); 
v1.push_back("mo1"); 

mos.insert(mos_map::value_type(*(v1.end()-1),v1)); 

for(it=mos.begin();it!=mos.end();it++); 
{ 
cout<<(*it).first<<endl;//seg fault occurs here 
} 
+0

FWIW,你可以寫'it-> first'。 –

+0

即使這(it-> first)導致核心轉儲 – user1939168

回答

4
for(it=mos.begin();it!=mos.end();it++); 
//         ^

你的循環具有空體。

一些提示:

  • 啓用警告:

    warning: for loop has empty body [-Wempty-body]

  • 需要時,才聲明變量:

    for(auto it = mos.begin(); it != mos.end(); it++); 
    { 
        cout << (*it).first << endl; 
    } 
    

    此代碼將導致一個編譯時錯誤:

    error: use of undeclared identifier 'it'

+0

bah,這是一個很好的理由,該循環應該是'for(auto it = mos.begin()....)' –

+0

OMG。這樣一個愚蠢的我....無論如何。我忘了注意, – user1939168

+0

@BalogPal,是的,我正在添加它:) – soon