首页 > 解决方案 > 固定大小的 std::span 与 std::array

问题描述

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

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

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

标签: c++stlstdarrayc++20

解决方案


spanarray指向值的指针。

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

如果你扫描你的代码库并将每个替换int为一个,int*你将拥有一个完全无意义的代码库,即使你*在每个使用点添加一个int*. 如果你扫描你的代码库并std::array用 a替换 every std::span,情况也是如此。

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


推荐阅读