지도 안에 벡터는 명확한 안전합니까?
문제
단지 빠른 질문, 당신이 말한 경우 :
using namespace std;
map< int, vector< string > > map1;
.
또는 어쩌면 심지어 :
map< int, map< int, vector< string > > > map2;
.
그리고 바로 올바른 생각을 얻으십시오 :
map< int, map< int, map< int, vector< string > > > > map3;
.
만약 내가하는 경우 :
map1.clear();
map2.clear();
map3.clear();
.
지도와 그 중첩 된지도, 벡터, 목록 등의 모든 것을 비울 때 안전합니다.
참고 : 나는 당신이 포인터를 사용하여 수동으로 옮기고 삭제해야합니다.
해결책
다른 팁
예이 작업이 완벽하게 안전합니다.STL 컨테이너는 메모리 관리를 처리합니다.
그러나 자신을 할당 한 객체에 포인터를 저장하면 직접 삭제해야합니다.
std::vector<MyClass*> vec;
vec.push_back(new MyClass());
vec.clear(); // you get a memory leak here because you did not delete the object you allocated.
. 제휴하지 않습니다 StackOverflow