문자열을 프로그램의 다른 부분에서 변경할 수 있기 때문에 문자열을 std :: map의 키로 사용하려고하지만 가능한 문제가 발생합니다. 지도 데이터를 쉽게 저장하지만 포인터 주소를 키로 요청하고 문자열 값에서 해당 데이터에 액세스하려고하기 때문에 데이터에 액세스 할 수 없습니다. 그것의 동안 프로그램의 다른 부분에서 변경 될 수포인터 유형을 키로 사용하여 std :: map에 액세스
using namespace std;
string AString = "pointer";
map<string, bool> AMap;
AMap[AString] = true;
cerr << AMap["pointer"];
당신은 정말지도 키를하지 않으려는 : 여기
는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 :: map 내부에서 항목의 키를 변경할 수 없습니다. 나는 당신이 왜 이것을하지 않을지 다시 생각해야만한다고 생각합니다. 문자열을 키로 저장할 수 있으며 키가 변경 될 때마다 이전 항목이 지워지고 업데이트 된 키가있는 맵에 다시 삽입됩니다. – P3trus