gpt4 book ai didi

c++ - 如何获取 map 值的引用?

转载 作者:行者123 更新时间:2023-11-30 03:22:20 45 4
gpt4 key购买 nike

通常 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++ - 如何获取 map 值的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51246367/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com