現在のプロジェクトでは、ポインターのSTLDequeがあります。また、それらのポインターが指しているすべてのオブジェクトを削除することを目的としたメソッドもあります。これを実現するために2つの異なる方法を考え出しましたが、どちらが好ましい方法かを判断できません。
方法1。
for (deque<MyType*>::const_iterator it = myDeque.begin(); it != myDeque.end(); ++it)
{
delete *it;
}
myDeque.clear();
方法2。
for (int i = 0; i < myDeque.size(); ++i)
{
delete myDeque[i];
}
myDeque.clear();
これらの方法は両方とも機能するはずですが、どちらが好ましいでしょうか?方法1はSTLを使用しますが、方法2の方がはるかに簡単です。コードのクリーンさ以外に、一方のメソッドをもう一方のメソッドよりも使用する必要がある理由はありますか?このシナリオでイテレータを使用することに少しのオーバーヘッドがあるにもかかわらず、イテレータを使用することに利点はありますか?
注:この質問は、Dequesだけでなく、他のSTLシーケンスコンテナーにも当てはまります。