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