gpt4 book ai didi

c++ - delete-keyword 在这个 for-each 循环中是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 01:34:10 25 4
gpt4 key购买 nike

我是 C++ 的新手,我想了解这段代码的工作原理。

~List() {
for(auto& i : nodes) {
delete &i;
}
}

我制作了一个具有节点 vector 的简单链表类。

我想了解的是,如果我删除当前节点,for each 循环如何知道下一个节点在哪里?

我认为它的工作原理是,我会存储指向下一个节点的指针并删除当前节点,并重复此过程,直到下一个节点为 nullptr。

(也许我对vector的理解不完整或者我不明白for-each循环是如何工作的。)

了解这段代码如何工作的人可以解释一下这里发生了什么吗?

最佳答案

for(auto& i : nodes) { delete &i; }

是粗略的语法糖

auto&& range = nodes;
for(auto it = std::begin(range); it != std::end(range); ++it)
{
auto& i = *it:
delete &i;
}

您只是遍历节点。假设 i 的析构函数不影响 nodes,那么您的代码就没有问题。

关于c++ - delete-keyword 在这个 for-each 循环中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56834194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com