2011-11-30 79 views
0

我在下面的單元代碼中做了什麼錯?當使用multimap時表單凍結

當我運行此代碼時,表單凍結,沒有消息輸出。

//--------------------------------------------------------------------------- 

#include <vcl.h> 
#include <map.h> 
#pragma hdrstop 

#include "Unit1.h" 

//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
    : TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::btn1Click(TObject *Sender) 
{ 
    typedef multimap<AnsiString,int> TMM; 
    TMM mm1; 
    mm1.insert(TMM::value_type("Vasya Vasya",1954)); 
    mm1.insert(TMM::value_type("Ivan Petr",1985)); 
    mm1.insert(TMM::value_type("Hasan Husein",1983)); 
    mm1.insert(TMM::value_type("Julia Mck",1982)); 

    AnsiString s=""; 
    TMM::iterator it=mm1.begin(); 
    while (it!=mm1.end()) 
    { 
     s+=(*it).first+ "-"+ IntToStr((*it).second)+"\n"; 
    } 
    ShowMessage(s); 



} 
//--------------------------------------------------------------------------- 
+0

中,雖然裏面的迭代器,你用'mm1.begin()'和'mm1.end()',但你沒有使用'MM1。 next()'或類似的東西來遍歷'mm1'。不是嗎? – gustavotkg

+0

是的,我錯過了在循環內增加'it'! –

回答

2

你需要增加while循環

+0

是的,我沒有在循環內增加'it'!這是問題所在。謝謝 –