span
用于表示一段连续内存的范围。它提供了对底层数据的非拥有式引用,并支持类似数组的操作。
最大的作用是可以用于代替数组作为函数参数,把数组作参数时(非引用)会退化为指针,如果把数组当参数时,还得传递数组的长度, 这样就必须得两个参数了,比较麻烦。传递span就只需要一个参数,它代码更简单,更安全,不会越界。
1 | int main(int argc, char** argv) |
需要注意的是,std::span
仅仅是引用连续内存范围的一种方式,它并不拥有这块内存。因此,在使用std::span
时需要确保被引用的内存块的生命周期大于或等于std::span
对象的生命周期,以避免悬空引用。