赋值运算符与地图

时间:2011-12-21 08:53:51

标签: c++

map<char *, int> sym_addr;
map<char *, int> sym_tbl;
void set_map(map<char *, int> & sym_tbl)
{
 sym_addr = sym_tbl;
}

上述作业有问题吗?

2 个答案:

答案 0 :(得分: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 :(得分:0)

您应该通过const引用传递参数,否则会阻止复制声明为const的地图。

此外,请确保您确切了解如果使用char*作为密钥会发生什么 - 密钥是字符串的地址,而不是其内容。如果您想按字符串 values 索引地图,请使用std::string作为密钥。