我经常在项目中使用切片结构:
Arrays.asList(vargs)
此外,我看到其他项目使用类似的容器来处理数据而不复制它(如RocksDB,MDB等......)。有谁知道有这样的容器的标准(或OS相关)标题? 在STL中,linux头文件,无论如何。
UPD。在我和我提到的项目中,这种容器的主要目的是处理数据而不复制它。例如。我用它来解析URI路径或LDAP DN并将其表示为切片的向量。
答案 0 :(得分:4)
在C ++标准库中更常见的是使用一系列迭代器(begin,end),而不是迭代器和长度(begin,length)。指针是迭代器的一个例子,这是一个更通用的概念。
没有标准的范围结构,也没有描述的切片†。标准接口将begin和end视为单独的对象。
但是,范围的添加proposed已存在technical specification,某些标准库实现可能已经支持这些范围。
†至少,一般情况下,但是有一个特殊的std::valarray
容器,它为其内容提供了一个slice接口。
答案 1 :(得分:1)
std::string_view
是一系列具有std::string
功能的字符的C ++ 17非拥有视图。除其他外,它旨在加速oarsing。
span
和array_view
是各种标准化和原始标准化工作的名称,它们也与您的概念相符,但不是字符串假设。