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

Ale*_*nov 7 c++ stl stdarray c++20

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

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

还有什么array可以用于那个span不可以吗?

Yak*_*ont 11

spanarray作为指针的价值观.

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

如果你横扫代码库和更换一次intint*你有一个完全胡说八道的代码库,即使你加了*在每个点使用的int*.如果你扫描你的代码库并std::array用a 代替每个代码库std::span,那么同样如此.

指针和价值观是不同的东西.你可以跳过篮球并尝试处理指针,好像它们是他们指向的东西的价值,但试图这样做往往很困难,结果往往是不连贯的.