小编Pau*_*opa的帖子

C++ - begin() 返回带有非空列表的 end() 迭代器

正如问题所暗示的那样,我对迭代器和列表有一种非常奇怪的行为。因此,(类)问题需要一个函数来擦除列表中满足条件的所有元素,并且当我试图涵盖我有一个所有元素都相同的列表的情况时,我发现最后一个元素仍然存在.

这是代码:

void esborra_tots(list<Estudiant>& t, int x) {
    list<Estudiant>::iterator it;
    list<Estudiant>::iterator itend = t.end();

    for (it = t.begin(); it != t.end(); it++) {
        if ((*it).consultar_DNI() == x) {

            t.erase(it);
            if (t.empty()) return;
            else it = t.begin();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用itend只是为了在调试时查看值。这是会议: 看到列表 *t* 不为空,但 t.begin() 返回与 t.end() 相同

这怎么可能?PD:我不是在寻找解决这个问题的其他方法。

c++ c++11 visual-studio-code

1
推荐指数
1
解决办法
130
查看次数

标签 统计

c++ ×1

c++11 ×1

visual-studio-code ×1