如何将地图作为参数传递并在此方法中添加?

时间:2012-06-18 13:23:01

标签: c++ stl map

所以我有一张地图

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 个答案:

答案 0 :(得分:11)

使用&通过引用传递:

void SetMapPairs(std::map<std::string, std::string>& mapPairs)
{
    // ...
}

答案 1 :(得分: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
}

答案 2 :(得分:3)

您使用&通过引用传递:

void SetMapPairs(map<string, string> & mapPairs)
{                                 // ^ that means it's a reference
    mapPairs["one"] = "two";
}

答案 3 :(得分:1)

至少对于这个特殊情况,我想我可能会返回一张地图,而不是通过引用传递一张地图:

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

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

然后在您的调用代码中,您可以使用以下内容:

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

对于大多数体面/现代编译器而言,生成的代码最终会以相同的方式结束,但我认为在这种情况下,这更适合您正在做的事情。