これを行うためのより良い(よりクリーンで、より読みやすく、および/または効率的な)方法は何ですか:
std::list<Fruit*> Apples;
std::list<Fruit> Basket;
for (std::list<Fruit*>::iterator niApple(Apples.begin());
niApple != Apples.end(); niApple++) {
for (std::list<Fruit>::iterator niBasket(Basket.begin());
niBasket != Basket.end(); niBasket++) {
if (&(*niBasket) == *niApple) {
Basket.erase(niBasket);
break;
}
} // loop
} // loop
あなたは何をお勧めします?主に、バスケット内に配置するリンゴへのハンドルが必要なので、検索せずにバスケットからリンゴを削除します(たとえば、固定配列内のインデックスによって)。ただし、バスケットはプロセス内でメモリの割り当てと割り当て解除を行う必要があります。