简介

  • C++ 标准库

C++ 标准库

在 C++ 标准库中并没有名为 <span> 的标准头文件或容器。<span> 并不是 C++ 标准库的一部分,而是从 C++20 开始引入的用于表示连续内存区域的非拥有式引用的类模板。其主要用途是对连续内存块进行引用和操作,而不拥有这些内存。

<span>通常用于在不拥有内存的情况下表示数据的连续区间,类似于指针和长度的组合。它提供了对这个区间的安全访问,例如遍历、查找等操作,但并不负责内存的生命周期。

C++ 标准库中提供了 std::span 类来实现这个概念,它在 <span> 头文件中定义。

以下是一个简单的示例演示 std::span 的基本用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <span>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    std::span<int> mySpan(arr, 5);

    for (const auto& elem : mySpan) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

在此示例中,std::span 被用来引用数组 arr 中的元素。std::span 对这段连续的内存区域提供了一种非拥有式的引用,允许你对这个区间进行安全的遍历和访问操作,但不管理这段内存的生命周期。