これが私の質問のおおよそのコードです。まず、コンストラクターを持つ構造体があります。
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&を使用する理由を説明できませんでした。この点を明確にしたいと思います。誰でも説明できますか?