2011-10-24 49 views
-1

對不起。在參考地圖訪問C++ - 訪問地圖參考

一個簡單的問題,如果我有:

map<int,string> *items= new map<int,string>(); 

我做到這一點?

string x = &items[100]; 
+0

在該代碼中,「items」不是引用,而是指針。 –

+2

不要說'新'。永遠。 (除非你明白你在做什麼,你可以通過忽略這個建議而感到放心的事實來說明)。 –

+0

不確定你要完成什麼,但'&items [100]'的意思是 - 給我地址動態分配的地圖數組中的第100個地圖,稱爲項目。然而,既然你只分配一個地圖(而不是一個地圖數組),這可能不是你想要的。 – CygnusX1

回答

2

所以,先問一下;你爲什麼動態地分配你的地圖?這首先會破壞使用它的目的。地圖將內部使用它的項目的動態分配,但地圖本身很便宜,並且您失去了通過範圍確定性地管理其內存的能力。因此,您的代碼變爲:

map<int,string> my_map; 
my_map[100] = "some string"; 
string x = items[100]; 

否則,您需要先取消引用地圖指針。

string x = (*my_map)[100]; 

真的......不這樣做。

1

如果你必須有:

map<int,string> *items= new map<int,string>(); 

你這樣做:

string x = (*items)[100]; 

如果你能有替代:

map<int,string> items; 

你可以這樣做:

string x = items[100];