C / C ++有标准的“切片”容器吗?

时间:2016-07-15 11:59:27

标签: c++ c

我经常在项目中使用切片结构:

Arrays.asList(vargs)

此外,我看到其他项目使用类似的容器来处理数据而不复制它(如RocksDB,MDB等......)。有谁知道有这样的容器的标准(或OS相关)标题? 在STL中,linux头文件,无论如何。

UPD。在我和我提到的项目中,这种容器的主要目的是处理数据而不复制它。例如。我用它来解析URI路径或LDAP DN并将其表示为切片的向量。

2 个答案:

答案 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。

spanarray_view是各种标准化和原始标准化工作的名称,它们也与您的概念相符,但不是字符串假设。