gpt4 book ai didi

c++ - 删除类列表的静态成员的元素

转载 作者:太空宇宙 更新时间:2023-11-04 14:41:04 25 4
gpt4 key购买 nike

我有以下类(class)。它有一个静态成员_list,由该类的所有实例共享,该成员将在Class_f() 中创建。我想使用删除功能来删除 _list 的最后一个元素。

class myClass 
{
private:
static list<int> _list;
public:
//constructors,destructors
void Class_f();
}

list<int> myCLass::_list;

void myClass::Class_f()
{
//..some code
list<int>::iterator it1;
it1=_list.end (); //erase for instance the last element _list
it1=_list.erase(it1);
//more code
}

然而,在编译时它会输出一条错误消息“列表迭代器不可递增”。为什么会给我这个错误?此外,为什么我不能使用像 _list.erase(_list.end()) 这样更简单的东西来避免创建迭代器。

最佳答案

_list.end() 不是指向最后一个元素的迭代器。它是最后一个迭代器。你真的不能用它做任何事情。 C++'s iterator ranges are half-open .

但是,如果您确实遇到了编译器 错误,那么说明您没有向我们展示某些错误。

您更有可能看到来自运行时的调试器消息,其中 Debug模式下的标准库实现非常友好地发现了您尝试递增 _list.end()(这将具有未定义的行为) ,这发生在为 _list.erase(it1) 准备返回值的过程中,并告诉你不要成为这样的傻瓜。 :)

关于c++ - 删除类列表的静态成员的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37183560/

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