12

を使用して割り当てられた、クラス オブジェクトへのポインターで構成される QMap がありますnew。これらのポインタをすべて削除する必要があります。QMap でこれを行う適切な方法は何ですか? 私はこのようにすることができます:

QList<ClassName*> allVals = map.values();
for (QList<ClassName*>::iterator it = allVals.begin(), endIt = allVals.end(); it != endIt; ++it) {
    delete *it;
}

しかし、同じことを行うより良い方法はありますか?

4

1 に答える 1

25

これを行う最善の方法は、qDeleteAll(...)を使用することです:

qDeleteAll( map );  //  deletes all the values stored in "map"
map.clear();        //  removes all items from the map

qDeleteAll(...)Qt のすべてのコンテナーで使用できます。このようにして、ループについて心配する必要も、アイテムを個別に削除することについて心配する必要もありません。

于 2013-04-06T11:40:28.917 に答える