gpt4 book ai didi

c++ - 为什么不是来自 std::array 双向/随机访问的 ConstexprIterator?

转载 作者:行者123 更新时间:2023-12-03 06:49:41 28 4
gpt4 key购买 nike

我有一个适用于任意容器的库函数。基本上它打印元素。对于双向/随机访问容器,它首先打印和最后打印,仅首先打印单向。识别和使用双向性取决于工作 --container.end() .这适用于 std::array在 C++17 中,但在 C++20 中 std::arrayConstexprIterator而不是 LegacyRandomAccessIterator .
阅读https://en.cppreference.com/w/cpp/named_req/ConstexprIterator似乎ConstexprIterator真的没有operator--而是与猫有关???
enter image description here
所以我的问题是:为什么不是 ConstexprIterator随机访问或至少是双向的?我的意思是,如果它在编译时工作,那么它真的应该是随机访问的。

最佳答案

in c++20 std::array has ConstexprIterator instead of LegacyRandomAccessIterator


不是“代替”。

https://en.cppreference.com/w/cpp/container/array (bold mine)

iteratorLegacyRandomAccessIterator and ConstexprIterator (since C++20) that is a LiteralType (since C++17)



WHY isn't ConstexprIterator random access or at least bidirectional


除了 ConstexprIterator 之外,迭代器还可以具有任何迭代器类别。
ConstexprIterator 要求类别(迭代器声称符合的)所需的所有操作都在编译时工作,仅此而已。
喵!

关于c++ - 为什么不是来自 std::array 双向/随机访问的 ConstexprIterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64144127/

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