2

だから私は地図を持っています

map<string, string> myMap;

SetMapPairs(map);

void SetMapPairs(map<string, string> mapPairs)
{  
    map<string, string> myMap = mapPairs;
    myMap["one"] = "two";
}

私はそれを間違っていることを知っていますが、それを行う方法がわかりません。
このメソッドでマップに追加できるように、参照で渡すにはどうすればよいですか?
また、最初に設定する必要がありmyMap = mapPairsます。そうしないと、簡単に設定できます。
void SetMapPairs(map<string, string> &mapPairs)

4

4 に答える 4

12

&参照渡しに使用します。

void SetMapPairs(std::map<std::string, std::string>& mapPairs)
{
    // ...
}
于 2012-06-18T13:24:44.660 に答える
4
typedef std::map<std::string, std::string> MyMap;


void myMethod(MyMap &map)
{
    map["fruit"] = "apple";
}

また

void myMethod(const MyMap &map)
{
    //can't edit map here
}
于 2012-06-18T13:23:59.350 に答える
3

&参照渡しに使用します:

void SetMapPairs(map<string, string> & mapPairs)
{                                 // ^ that means it's a reference
    mapPairs["one"] = "two";
}
于 2012-06-18T13:25:36.593 に答える
1

少なくともこの特定のケースでは、参照でマップを渡すのではなく、おそらくマップを返すと思います。

map<string, string> SetMapPairs() {
    std::map<string, string> temp;

    temp["one"] = "two";
    return temp;
}

次に、呼び出しコードで、次のようなものを使用できます。

map<string, string> MyMap = SetMapPairs();

ほとんどのまともな/最新のコンパイラでは、生成されたコードはどちらの方法でもほぼ同じになりますが、状況下では、これは実際に行っていることにより適していると思います.

于 2012-06-18T13:33:20.410 に答える