如何获取地图值的参考?

How to get reference of map value?

本文关键字:参考 地图 何获取 获取      更新时间:2023-10-16

通常 std::map::operator[] 返回对对象的引用。

https://en.cppreference.com/w/cpp/container/map/operator_at

std::map<char*, char*>* myMap1 = new std::map<char*, char*>() ;
char* c1 = new char[100];
strcpy(c1,"fggf");
char* c2 = new char[100];
strcpy(c2 ,"gdgfd");
myMap1->insert(std::pair<char*,char*>(c1,c2));
char* v1=  (*myMap1)[c1];
char** v2=  &(*myMap1)[c1];

在这个程序中(*myMap1([c1]不返回引用,这个语法只返回&(*myMap1([c1]返回引用为什么?

C++和C最好不要混合使用!当您可以使用字符串时,不要使用 char*(如果您有 C++17,则使用 string_view

map<string, string> myMap; //C++ prefers value sementatics, don't go for pointers 
//unless absolutely necessary, and if it is...
auto myMapPtr = make_unique<map<string, string>>(); //Use smart pointers! 
myMap["fggf"] = "gdgfd"; //Lots of people don't know that [] also inserts, no need to construct a pair...
string c2 = MyMap.at("fggf"); //that's it!

就是这样,您只需要三行。不要混淆。:)

我支持上面的答案,但如果你坚持使用 C,请使用这个:

std::map<const char*, const char*>* myMap1 = new std::map<const char*, const char*>();
const char* c1 = "fggf";
const char* c2 = "gdgfd";
myMap1->insert(std::pair<const char*,const char*>(c1,c2));
const char* v1=  myMap1[c1];
const char** v2=  &(myMap1[c1]);