所以我有一张地图
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)
答案 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();
对于大多数体面/现代编译器而言,生成的代码最终会以相同的方式结束,但我认为在这种情况下,这更适合您正在做的事情。