map<char *, int> sym_addr;
map<char *, int> sym_tbl;
void set_map(map<char *, int> & sym_tbl)
{
sym_addr = sym_tbl;
}
上述賦值有問題嗎?賦值運算符與地圖
map<char *, int> sym_addr;
map<char *, int> sym_tbl;
void set_map(map<char *, int> & sym_tbl)
{
sym_addr = sym_tbl;
}
上述賦值有問題嗎?賦值運算符與地圖
一個更好的辦法是將鍵更改爲std::string
:std::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 =用於將一個地圖的內容複製到另一個地圖中。
我可能會推薦'typedef std :: map
您應該通過參考const
來傳遞參數,否則您會阻止複製宣佈爲const
的地圖。
此外,還要確保你明白,如果你使用char*
作爲重點究竟發生了什麼 - 關鍵是地址字符串,而不是其內容。如果要按字符串的值對地圖編制索引,請使用std::string
作爲關鍵字。
問題:sym_addr的鍵可能會泄漏。但也許這不是你問的問題。 – kennytm 2011-12-21 08:55:44
你想實現什麼? – 2011-12-21 08:56:04
請更具體地定義「任何問題」。 – thiton 2011-12-21 08:56:41