这是我的问题的大致代码。首先,我们有一个带有构造函数的结构体:
struct Pair{
Pair(int a, int b): (first (a) , second (b) ) {}
int first;
int second;
};
在地图中使用
map<string, Pair> mymap;
我想在一个函数中初始化这个地图
void f(map<string, Pair>* mymap, string c,int x, int y )
{
(*mymap)[c]=Pair(x,y);
}
但是编译器首先说它找不到合适的构造函数,然后下一行是没有为构造函数提供足够的参数。
我的一个朋友告诉我,我应该这样写函数:
void f(map<string, Pair>& mymap, const string& c,int x, int y )
{
if (mymap.find(c) != mymap.end()) {
mymap[c] = Pair(x,y);
}
}
但他无法解释为什么这里应该使用Type&而不是Type *,我想澄清这一点。谁能解释一下?