문제

단지 빠른 질문, 당신이 말한 경우 :

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 컨테이너 인 경우 파괴자는 컨테이너를 삭제합니다.

STL 컨테이너 정보 std::map의 소멸자

다른 팁

예이 작업이 완벽하게 안전합니다.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.
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top