質問

あなたが言うのなら、すぐに質問をする:

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