为什么没有类似于std :: string_view的视图<T>

Sit*_*esh 4 c++ stdstring c++17

据我所知,std::string_view一个非所属参照字符串之间的主要差异std::string_view,并std::string

在此输入图像描述

现在,为什么std :: string_view不适用于其他类型?或者为什么这个实现仅适用于std::string

例如:如果我们有类似的<T>generic_view地方T可以是任何类型,包括自定义类型.

有了这个,可以使用而不是使用const T& as函数参数<T>generic_view.而且其他优点std::string_view也很有用,如分配,复制等.

Dre*_*ann 7

对于任意对象的连续集合,存在建议的非拥有类型.

std::span已被批准用于C++ 20.(现在可以使用实现,如gsl::span.)

它的行为类似于C++ 17 std::string_view,但该接口提供了类似于容器的通用访问,并且不限制对数据的访问const.

  • 甜蜜,它成功了. (3认同)
  • @Sitesh:"*因为你可以很容易地使用std :: span作为std :: string.*"除非你想使用`string_view`的特定于字符串的成员函数. (3认同)
  • `span` 不是一个“视图”;视图是不可修改的;`span` 是可以修改的。 (2认同)
  • @NicolBolas 不,`span` 绝对是一个视图。视图并不意味着不可修改。 (2认同)
  • @Sitesh 我们将拥有 `span&lt;char const&gt;` 和 `string_view`,就像今天我们拥有 `vector&lt;char&gt;` 和 `string` 一样。 (2认同)