在他的C++ Core Guidelines中,Bjarne Stroustrup建议在通过引用传递数组时使用span。为什么不直接传递一个std :: array对象?
答案 0 :(得分:10)
按值传递std::array
将复制它们。 gsl::span
的要点是获取它们的函数引用现有的数据数组。
gsl::span
能够获取运行时定义的大小数组。 std::array
在编译时修复。
gsl::span
并不关心拥有数组的类型;它只是一个指针+大小。因此,基于span
的界面可以从std::vector
,QVector
和许多其他类型提供数据。基于std::array
的界面需要您使用该特定容器。