std::vector<Circle*> circles
for(int i=0; i<circles.size(); i++) // 1
delete circles[i];
for(auto & circle : circles) // 2
delete circle;
for(Circle * circle : circles) // 3
delete circle;
for(Circle *& circle : circles){ // 4
delete circle;
If I write it the first way, CLion IDE suggests me to use the second way so I guess they're the same. I'm not really sure why there's a reference next to auto and if any of methods 3 or 4 are correct as well? I would guess 4 is also same as 1 and 2.