2013-09-24 74 views
0

我想將自定義類的對象作爲值傳遞到STL映射。我怎麼做..?將自定義類對象作爲值傳遞到STL映射

這裏是一個代碼:

class demo 
{ 

int a, b,c,d,e; 

} 

// here is how declare my map: 

map<int, demo*> my_map; 

這是怎麼回事,我使用它變成功能:

demo *ptr = NULL; 
ptr = new demo; 

下面是我插入地圖

my_map.insert(make_pair(int, ptr); 

// Delete current instance 

delete ptr; 

是這是一個正確的方式..?

回答

3

其實沒有。如果要將demo對象存儲在map中,則應該使用map<int, demo>。將資源管理設置爲std::map。另外,通過使用delete ptr您銷燬剛剛創建的對象,並且my_map[index]將是無效指針。可以使用my_map.insert(make_pair(myIndex, myDemoObject));

另外請注意,使用my_map[myIndex]將創建對象指定索引,如果不存在的話,那麼你可以做到以下幾點:

std::map<int, demo> my_map; 
my_map[1].a = 42; 
my_map[2].b = 1337; 
my_map[3].c = 314159; 
my_map[4].d = 23; 
+0

其實我想創建演示類的4個新的實例和將其成員(即a,b,c,d,e)的值分配給4個不同的「Key」。這就是爲什麼我調用delete ptr,以便創建演示類的新實例。 – user2812535

+0

此外,我有意在插入函數後遺漏了一些代碼。我只粘貼了代碼的相關部分。 – user2812535

+0

此外,我有意在插入函數後遺漏了一些代碼。我只粘貼了代碼的相關部分。 – user2812535

相關問題