gpt4 book ai didi

c++ - 实现 std::vector 时,我是否必须拥有 end() 的 "end"指针?

转载 作者:太空狗 更新时间:2023-10-29 23:43:27 28 4
gpt4 key购买 nike

假设我有自己的 std::vector 实现,它为迭代提供了 begin()end() 函数。 size()==capacity()end() 返回的指针可能不属于我。它是安全的还是我需要确保 size() <capacity()

我知道这个难题可以通过使用自定义迭代器类来克服,但这里我谈论的是更简单的情况,当 begin() 简单地返回一个指向缓冲区开始的指针,而 end()begin()+size()

最佳答案

标准禁止解引用无效指针(并且标准详细描述了什么可能使指针无效,例如指针对象的生命周期、内存块本身的生命周期和指针的对齐方式)。

只要该指针的用户不取消引用它,并且在某些情况下只要该指针的用户不读取它(请参阅评论部分),就可以持有无效指针。

正如您自己建议的那样,end 只是return begin() + size()

关于c++ - 实现 std::vector 时,我是否必须拥有 end() 的 "end"指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949006/

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