我是C ++的新手,我正在尝试了解这段代码的工作原理。
~List() {
for(auto& i : nodes) {
delete &i;
}
}
我制作了一个具有节点向量的简单链接列表类。
我要了解的是,如果删除当前节点,那么每个循环的怎么知道下一个节点在哪里?
我认为这是可行的,我将存储指向下一个节点的指针并删除当前节点,然后重复此过程,直到下一个节点为nullptr。
(也许我对向量的理解还不完整,或者我不了解for-each循环的工作原理。)
了解此代码的工作原理的人可以解释一下这里发生了什么吗?
答案 0 :(得分:4)
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;
}
您只是遍历nodes
。假设i
的析构函数不影响nodes
,那么您的代码就没有问题。