【问题标题】:Expected Container behavior预期的容器行为
【发布时间】:2020-01-11 23:45:59
【问题描述】:

我正在 C++ 中构建一个迭代器中的容器,我想“模拟”标准容器行为,但我无法弄清楚迭代器会发生什么,如果在创建和删除之间它,引用的Container发生了变化。

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

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

现在迭代器中的指针指向一个不再存在的对象,所以如果我取消引用它,它将导致分段错误。

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

【问题讨论】:

  • 哦,所以我应该认为迭代器无效,所以我不必关心容器的更改,谢谢(你会考虑把这个作为答案,这样我就可以结束这个问题了吗?)跨度>

标签: c++ iterator std


【解决方案1】:

C++ 标准库对每个容器的迭代器失效有很多规则,例如std::listpop_front,其中指出:“对已擦除元素的引用和迭代器失效”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 2016-01-09
    • 2017-04-22
    相关资源
    最近更新 更多