2011-12-21 34 views
-2
map<char *, int> sym_addr; 
map<char *, int> sym_tbl; 
void set_map(map<char *, int> & sym_tbl) 
{ 
sym_addr = sym_tbl; 
} 

上述賦值有問題嗎?賦值運算符與地圖

+3

問題:sym_addr的鍵可能會泄漏。但也許這不是你問的問題。 – kennytm 2011-12-21 08:55:44

+2

你想實現什麼? – 2011-12-21 08:56:04

+3

請更具體地定義「任何問題」。 – thiton 2011-12-21 08:56:41

回答

0

一個更好的辦法是將鍵更改爲std::stringstd::map< std::string, int>

如果要複製,通過const引用傳遞對象:

typedef std::map< std::string, int> myMapType; 
myMapType sym_addr; 
myMapType sym_tbl; 
void set_map(const myMapType & sym_tbl) 
{ 
sym_addr = sym_tbl; 
} 

其他則是,不存在任何問題。 map :: operator =用於將一個地圖的內容複製到另一個地圖中。

+1

我可能會推薦'typedef std :: map symtable;'以簡化代碼。 – 2011-12-21 09:32:01

0

您應該通過參考const來傳遞參數,否則您會阻止複製宣佈爲const的地圖。

此外,還要確保你明白,如果你使用char*作爲重點究竟發生了什麼 - 關鍵是地址字符串,而不是其內容。如果要按字符串的值對地圖編制索引,請使用std::string作爲關鍵字。