Visual Studio 2010에서 포인터에 대한 포인터를 맵에 할당하는 while 문을 만듭니다. 예 :while 문에서 포인터에 포인터를 생성합니다.
std::map<int,std::tuple<int,std::string>** > dmap;
int i=0;
while (i<3){
std::tuple<int,std::string>* t = new std::tuple<int,std::string>(10+i,std::string("test"));
dmap[i] = &t;
dmap[i + 1 ] = &t;
i++;
}
.
.
.
for (auto it = d.begin();it!=d.end();++it)
{
if(*(it->second) != nullptr){
delete *(it->second);
*(it->second) = nullptr;
}
}
문제는 &t
의 주소는 항상 내가 마지막 *t
값을 입력 한 모든 키에 대한 동일한 그래서지도가 항상 포함 말 것입니다.
무엇이 문제입니까? (해결 된)
[편집] 이제 불완전하기 전에 코드 beacause를 수정합니다. nullptr을 삭제하지 않으려면 포인터 포인터가 있어야합니다. 안 그래요?
'dmap [i] = t;'대신에 t는 로컬 변수이므로 주소가 루프에서 동일하다는 것이 정상입니다. Btw a는 잠시 동안 이보다 더 좋으며 줄이 더 쉽습니다. – Thomas
맞아, 고마워. – user3032420
문제는 코드를 제대로 들여 쓰지 않았기 때문입니다! –