字符串下标是关联的索引吗?

Is string subscript an associated index?

本文关键字:索引 关联 下标 字符串      更新时间:2023-10-16

下标运算符 ([]( 采用 std::string::size_type 值。 运算符返回对给定字符的引用 位置。下标中的值称为"下标">pp93~94 C++引物5ed。

向量是对象的集合,所有这些对象都具有相同的类型。集合中的 Evey 对象有一个关联的索引,它给出了 访问该对象。pp96 C++ 入门 5 版。

问题:

字符串下标是关联的索引吗?如果不是,std::string 类型的下标和集合/向量的关联索引有什么区别?

将"索引"视为"项目的序列号",而不是将"索引"视为"书籍中的查找表"。

他们所说的向量是,其中的元素可以通过顺序的数字索引访问:v[0]v[1]等。

字符串和其中的字符也是如此。

根据

std::vector::operator[],函数:

返回对指定位置处的元素的引用。 不执行边界检查。

根据std::basic_string::operator[],函数:

返回对指定位置处字符的引用。 不执行边界检查。如果 pos> size((,则行为未定义。

因此,它们几乎是一回事。术语关联索引的意思正是它听起来的样子;它是与元素关联的索引,仅此而已。

这里的措辞相当精确,但这两种简单的情况没有真正的区别。对于stringvectorX[0]表示X的第一个元素。也就是说,0是X的第一个元素的相关索引,0也是operator[]的参数,也就是下标。

要查看一个不那么简单的示例,请考虑std::string_view 。可以string_view字符串的第 100 到 200 个字符。现在view[5]有下标 5,但它引用基础字符串中的第 105 个字符。