字符串下标是一个相关的索引吗?

时间:2018-01-31 14:20:50

标签: c++ string indexing subscript

  

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

  

向量是对象的集合,所有对象都具有相同的类型。集合中的Evey对象具有相关的索引,它给出了   访问该对象。 pp96 C ++ Primer 5ed。

问题:

字符串下标是一个关联的索引吗?如果没有,std :: string类型的下标与集合/向量的相关索引之间有什么区别?

3 个答案:

答案 0 :(得分:5)

思考"索引" as"项目的序号,"不是"索引"作为"书中的查找表。"

他们对矢量的看法是,可以通过连续数字索引访问其中的元素:v[0]v[1]等。

字符串及其中的字符完全相同。

答案 1 :(得分:1)

根据std::vector::operator[],功能:

  

返回对指定位置pos处元素的引用。没有进行边界检查。

根据std::basic_string::operator[],功能:

  

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

因此,它们几乎是一回事。术语相关指数的含义正是它的含义;它是与元素相关联的索引,仅此而已。

答案 2 :(得分:1)

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

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