为什么没有 <T> 类似于 std::string_view 的视图
Why there is no view<T> similar to std::string_view
我知道 std::string_view
是 对字符串的非拥有引用 并且 std::string_view
和 std::string
之间的主要区别是
现在,为什么 std::string_view 不适用于其他类型?或者为什么这个实现只针对 std::string
?
例如:如果我们有类似的 <T>generic_view
,其中 T
可以是任何类型,包括自定义类型。
有了这个,可以使用 <T>generic_view
而不是使用 const T&
作为函数参数。 std::string_view
的其他优点也很有用,如分配、复制等。
在 C++20 中有一个 non-owning 类型,用于任意对象的连续集合,称为 std::span
。
C++20 之前的 C++ 版本可以使用独立实现 gsl::span
。
std::span
的行为类似于 C++17 的 std::string_view
,但接口提供 general 类似容器的访问而不是类似字符串的访问,并且基础数据可以是非const
。 (根据问题中的 table,Element Mutability 是 Allowed。)
我知道 std::string_view
是 对字符串的非拥有引用 并且 std::string_view
和 std::string
之间的主要区别是
现在,为什么 std::string_view 不适用于其他类型?或者为什么这个实现只针对 std::string
?
例如:如果我们有类似的 <T>generic_view
,其中 T
可以是任何类型,包括自定义类型。
有了这个,可以使用 <T>generic_view
而不是使用 const T&
作为函数参数。 std::string_view
的其他优点也很有用,如分配、复制等。
在 C++20 中有一个 non-owning 类型,用于任意对象的连续集合,称为 std::span
。
C++20 之前的 C++ 版本可以使用独立实现 gsl::span
。
std::span
的行为类似于 C++17 的 std::string_view
,但接口提供 general 类似容器的访问而不是类似字符串的访问,并且基础数据可以是非const
。 (根据问题中的 table,Element Mutability 是 Allowed。)