中的指針的指針我創建了一個while語句,其中我將一個指針指向指向地圖的指針。 例子:在Visual Studio 2010中創建指向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
值的所有鍵。
有什麼問題? (已解決)
[編輯] 現在我修改代碼之前它是不完整的,如果我想要避免刪除nullptr我需要有一個指針指針。或不?
'dmap [i] = t;'而不是t,因爲t是一個局部變量,所以地址在循環中是一樣的。順便說一句,在這種情況下,比在這種情況下好一陣子,更容易 – Thomas
你是對的,謝謝。 – user3032420
問題是您沒有正確縮進您的代碼! –