预期的容器行为

Expected Container behavior

我正在迭代器中用 C++ 构建一个容器,我想 "emulate" std 容器行为,但我不知道迭代器会发生什么,如果在创建之间并删除它,引用更改的容器。

示例: 我有一个单一的喜欢列表,所以在迭代器中我必须存储指向它所引用的链表的第一个元素的指针,但是假设我们有一段代码,如

Iterator iter { linkedList.begin() };
linkedList.deleteFirstElement();

现在 Iterator 中的指针指向一个不再存在的对象,因此如果我取消引用它,将导致分段错误。

我的问题是:我是否必须在链接列表的迭代器中创建一个副本,它引用或证明这是未定义的行为?

C++ 标准库对每个容器的迭代器失效有许多规则,例如 std::listpop_front 注释:"References and iterators to the erased element are invalidated".