F.1 13种类型和一个常量
模板basic_string定义了几种类型,供以后定义方法时使用:
traits是对应于特定类型(如char_traits<char>)的模板参数;traits_type将成为该特定类型的typedef。下述表示法意味着char_type是traits表示的类中定义的一个类型名:
关键字typename告诉编译器,表达式trait::char_type是一种类型。例如,对于string具体化,value_type为char。
size_type与size_of的用法相似,只是它根据存储的类型返回字符串的长度。对于string具体化,将根据char返回字符串的长度,在这种情况下,size_type与size_of等效。size_type是一种无符号类型。
differrence_type用于度量字符串中两个元素之间的距离(单位为元素的长度)。通常,它是底层类型size_type有符号版本。
对于char具体化来说,pointer的类型为char *,而reference的类型为char &类型。然而,如果要为自己设计的类型创建具体化,则这些类型(pointer和reference)可以指向类,与基本指针和引用有相同的特征。
为将标准模板库(STL)算法用于字符串,该模板定义了一些迭代器类型:
该模板还定义了一个静态常量:
由于size_type是无符号的,因此将-1赋给npos相当于将最大的无符号值赋给它,这个值比可能的最大数组索引大1。