传递span <t>和std :: array作为参数之间的区别是什么?

时间:2017-01-06 19:11:39

标签: c++ cpp-core-guidelines

在他的C++ Core Guidelines中,Bjarne Stroustrup建议在通过引用传递数组时使用span。为什么不直接传递一个std :: array对象?

1 个答案:

答案 0 :(得分:10)

  1. 按值传递std::array复制它们。 gsl::span的要点是获取它们的函数引用现有的数据数组。

  2. gsl::span能够获取运行时定义的大小数组。 std::array在编译时修复。

  3. gsl::span并不关心拥有数组的类型;它只是一个指针+大小。因此,基于span的界面可以从std::vectorQVector和许多其他类型提供数据。基于std::array的界面需要您使用该特定容器。