下标运算符( [] )采用std :: string :: size_type值。 运算符返回对给定字符的引用 位置。下标中的值称为“下标” pp93~94 C ++ Primer 5ed。
和
向量是对象的集合,所有对象都具有相同的类型。集合中的Evey对象具有相关的索引,它给出了 访问该对象。 pp96 C ++ Primer 5ed。
问题:
字符串下标是一个关联的索引吗?如果没有,std :: string类型的下标与集合/向量的相关索引之间有什么区别?
答案 0 :(得分:5)
思考"索引" as"项目的序号,"不是"索引"作为"书中的查找表。"
他们对矢量的看法是,可以通过连续数字索引访问其中的元素:v[0]
,v[1]
等。
字符串及其中的字符完全相同。
答案 1 :(得分:1)
根据std::vector::operator[]
,功能:
返回对指定位置pos处元素的引用。没有进行边界检查。
根据std::basic_string::operator[]
,功能:
返回对指定位置pos处的字符的引用。不执行边界检查。如果pos> size(),行为未定义。
因此,它们几乎是一回事。术语相关指数的含义正是它的含义;它是与元素相关联的索引,仅此而已。
答案 2 :(得分:1)
这里的措辞相当精确,但这两个简单的案例并没有真正的区别。对于string
和vector
,X[0]
表示X的第一个元素。也就是说,0是X的第一个元素的关联索引,0也是operator[]
,又名下标。
要查看不那么简单的示例,请考虑std::string_view
。您可以拥有字符串的第100个到第200个字符的string_view。现在view[5]
有下标5,但它引用了底层字符串中的第105个字符。