C ++ 20包括std::span
, which "describes an object that can refer to a contiguous sequence of objects with the first element of the sequence at position zero"。它的界面非常接近std::array
,虽然它支持动态范围和固定范围。
明显的区别是std::array
拥有其元素(因此它的析构函数会破坏它们)而std::span
没有。
array
可以使用其他任何内容span
吗?
答案 0 :(得分:8)
span
是array
,因为指针是值。
int
是否可以使用int*
而不是int
?
如果您扫描代码库并用int*
替换每个*
,那么即使您在每个点都添加了int*
,您也会拥有完全无意义的代码库。 - 使用std::array
。如果您扫描代码库并用std::span
替换每个<0x00>
,则情况也是如此。
指针和价值观是不同的东西。你可以跳过篮球并尝试处理指针,好像它们是他们指向的东西的价值,但试图这样做通常很困难,结果往往是不连贯的。