我試圖從unordered_map<int, unordered_set<int>>
中刪除unordered_set<int>
。如果我從C++嵌套的map/set中刪除一個元素,會不會有任何內存泄漏?
在將它從unordered_map中刪除後,unordered_set<int>
會發生什麼?它會留在內存中,從而導致內存泄漏?如果是的話,我應該怎麼做才能將它從內存中完全移除?
我試過下面的代碼。
#include <iostream>
#include <unordered_map>
#include <unordered_set>
using namespace std;
unordered_map<int, unordered_set<int>> mp;
int main()
{
mp[0] = unordered_set<int>();
mp[0].insert(1);
mp[0].insert(2);
unordered_set<int>& st = mp[0];
cout << st.size() << endl;
mp.erase(0);
cout << st.size() << endl;
return 0;
}
輸出是2和0這似乎在unordered_set元素已被刪除,但什麼unordered_set本身?它仍然留在記憶中嗎?
你在推翻它。標準容器爲您保管內存。這裏唯一錯誤的是懸掛參考,它的使用是未定義的行爲。 – DeiDei