gpt4 book ai didi

c++ - iterator_traits::iterator>::iterator_category 不应该是 input_iterator_tag 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 02:04:18 25 4
gpt4 key购买 nike

我最近了解到ForwardIterator需要operator *通过引用返回,这意味着迭代器返回代理,例如 std::vector<bool> , 不能是ForwardIterator([forward.iterators])。

但是,我测试了std::iterator_traits<std::vector<bool>::iterator>::iterator_category在不同的编译器中( G++ , Clang , MSVC ) 和它总是std::random_access_iterator_tag .是否符合上述要求?

最佳答案

不,不是。这是 vector<bool> 的大问题的一部分。 .

标准自相矛盾。它说 vector的迭代器是随机访问的,但定义了 vector<bool>其迭代器不满足 RandomAccessIterator 的要求.

Herb Sutter 的这篇古老论文解释了这个和其他缺点:http://www.gotw.ca/publications/N1185.pdf

关于c++ - iterator_traits<vector<bool>::iterator>::iterator_category 不应该是 input_iterator_tag 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738970/

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