簡體   English   中英

如何獲得地圖價值的參考?

[英]How to get reference of map value?

通常,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最好不要混用! 當您可以使用字符串(或具有C ++ 17的string_view)時,請勿使用char *

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]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM