固定大小的 std::span vs std::array

Fixed-size std::span vs std::array

本文关键字:std span vs array      更新时间:2023-10-16

C++20 包括std::span,它"描述了一个对象,该对象可以引用一个连续的物体序列,序列的第一个元素位于位置零"。它的界面非常接近std::array,尽管它支持动态范围和固定范围。

明显的区别是std::array拥有它的元素(因此它的析构函数会破坏它们(,而std::span则没有。

还有什么array可以用来span不能的吗?

spanarray,因为指针指向值。

有什么int可以比int*不能使用的吗?

如果您扫描代码库并用int*替换每个int,即使您在int*的每个使用点都添加了*,您也会拥有一个完全无意义的代码库。 如果您扫描代码库并用std::span替换每个std::array,也是如此。

指针和值是不同的东西。 你可以跳过箍,尝试处理指针,就好像它们是它们所指向的东西的价值一样,但试图这样做通常很困难,结果往往是不连贯的。