代码之家  ›  专栏  ›  技术社区  ›  Alexey Romanov

固定大小的STD::SUN vs STD::数组

  •  7
  • Alexey Romanov  · 技术社区  · 6 年前

    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::阵列 拥有它的元素(因此它的析构函数会销毁它们) STD::跨度 不。

    还有别的事吗 array 可以用来 span 不能?

    1 回复  |  直到 6 年前
        1
  •  10
  •   Yakk - Adam Nevraumont    6 年前

    span 是为了 array 就像指针指向值一样。

    有什么 int 可用于 int* 不能吗?

    如果你扫描了你的代码库并替换了 int 用一个 INT* 即使你添加了一个 * 在每个使用点 INT* . 如果你扫描了你的代码库并替换了 std::array 用一个 std::span ,同样的道理。

    指针和值是不同的。你可以跳出圈套,试着像对待他们所指事物的价值一样对待指针,但尝试这样做往往是困难的,结果往往是不连贯的。