2011-12-21 65 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作为关键字。