如何获取地图值的参考?
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最好不要混合使用!当您可以使用字符串时,不要使用 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]);
相关文章:
- 为什么不;名字在地图上是按顺序排列的吗
- 基于多个条件处理地图中的所有元素
- C++错误消息*成员参考.**初学者*
- 在C++中将矢量转换为嵌套地图
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 参考资源文件VC++中的$(SolutionDir)
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 替换基于地图的所有引用
- 如何区分地图中的 0 和 false?
- 地图计数确实很重要,或者只是检查是否存在
- 为什么在运算符重载时需要参考?
- 如何从地图中删除矢量对象
- 如何获取地图值的参考?
- 遍历地图并将该对用作参考参数 C++11
- 为什么通用参考概念不适用于函数指针的地图插入
- 通过参考从地图获取对象
- 在STL地图中通过参考查找并返回
- C 地图向量参考错误
- 通过参考传递地图时缺少模板参数
- 这个用于地图的参考计数内存管理器的概念好吗?