【发布时间】:2021-06-14 05:15:43
【问题描述】:
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;
如果我用第一种方式编写,CLion IDE 建议我使用第二种方式,所以我猜它们是一样的。我不太确定为什么 auto 旁边有一个引用,以及方法 3 或 4 中的任何一个是否也正确?我猜 4 也与 1 和 2 相同。
【问题讨论】:
-
FWIW,如果你使用
std::vector<std::unique_ptr<Circle>> circles,你不需要写任何清理代码。 -
4 与 2 相同,3 与使用
auto没有 & 相同 -
4 种方法都是正确的。这是您问题的答案吗?
标签: c++ pointers vector reference