C++ 使用指针类型作为键访问std::map

C++ 使用指针类型作为键访问std::map,c++,pointers,stl,map,reference,C++,Pointers,Stl,Map,Reference,我试图使用字符串作为std::map的键,因为该字符串可以从程序的不同部分更改,但我遇到了一个问题,我可以轻松地在map中存储数据,但我无法访问它,因为它要求指针地址作为键,我想从字符串的值访问该数据 这是密码 using namespace std; string *AString = "pointer"; map<string *, bool> AMap; //Declare AMap[AString] = true; //Insert into map with key A

我试图使用字符串作为std::map的键,因为该字符串可以从程序的不同部分更改,但我遇到了一个问题,我可以轻松地在map中存储数据,但我无法访问它,因为它要求指针地址作为键,我想从字符串的值访问该数据

这是密码

using namespace std;

string *AString = "pointer";

map<string *, bool> AMap; //Declare
AMap[AString] = true; //Insert into map with key AString

cerr << AMap["pointer"]; //Does not work
使用名称空间std;
字符串*AString=“指针”;
map AMap//声明
AMap[AString]=真//使用快捷键插入地图

cerr解决方案是不使用指针:

using namespace std;

string AString = "pointer";

map<string, bool> AMap;
AMap[AString] = true;

cerr << AMap["pointer"];
使用名称空间std;
字符串AString=“指针”;
map AMap;
AMap[AString]=真;

cerr解决方案是不使用指针:

using namespace std;

string AString = "pointer";

map<string, bool> AMap;
AMap[AString] = true;

cerr << AMap["pointer"];
使用名称空间std;
字符串AString=“指针”;
map AMap;
AMap[AString]=真;
cerr“指针”是一个C字符串,指针指向内存中的字符串。您需要执行以下操作:

cerr << AMap[AString];
“指针”是指针指向内存中的C字符串。您需要执行以下操作:

cerr << AMap[AString];

看起来你可能来自Java或C#

std::string aString=“非指针”;
映射aMap;
aMap[aString]=真;

看来你可能来自Java或C

std::string aString=“非指针”;
映射aMap;
aMap[aString]=真;

std::cerr您不能更改std::map中条目的键。我想你必须重新考虑你为什么不这么做。您可以将字符串存储为密钥,每次更改密钥时,您都会删除旧条目并使用更新的密钥将其重新插入到映射中。您不能更改std::map中条目的密钥。我想你必须重新考虑你为什么不这么做。您可以将字符串存储为键,每次更改键时,您都会删除旧条目并使用更新的键将其重新插入映射。为什么我们不能将共享变量用作映射中的键?我想使用指针,因为值会发生变化,如果键发生变化,我希望键保持不变。为什么我们不能在映射中使用共享变量作为键?我想使用指针,因为值会发生变化,如果键发生变化,我希望键保持不变。