gpt4 book ai didi

c++ - 为什么 C++ 容器不实现删除(reverse_iterator position)?

转载 作者:可可西里 更新时间:2023-11-01 18:37:40 27 4
gpt4 key购买 nike

我查看了一些 C++ 容器(vector、deque、list、map、set),发现它们都没有实现

erase(reverse_iterator position)

answer 中所述,有一种方法可以从 reverse_iterator 获取迭代器.

但是为什么上面的容器没有实现带reverse_iterator参数的erase成员函数呢?

iterator 和 reverse_iterator 之间是否存在显着差异,这使得此类实现变得困难或由于其他原因未实现?

最佳答案

几乎任何容器函数都可以问同样的问题:为什么不为反向迭代器实现它?答案可能是一个简单的事实,即反向迭代器很容易通过 base() 调用转换为常规迭代器。将调用 base() 的负担放在用户身上,而不是通过为容器中的每个函数实现一个“反向”版本,将容器函数的数量几乎翻倍,这更有意义。

有人会争辩说,它打破了容器在通过反向迭代器处理这些容器的外部上下文中的“通用性”。但从一开始,反向迭代器就被设计为“不同的”,除了大多数微不足道的上下文外,不一定与普通迭代器兼容。

关于c++ - 为什么 C++ 容器不实现删除(reverse_iterator position)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31774838/

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