术语表
being 是string和vector的成员,返回指向第一个元素的迭代器。也是一个标准库函数,输入一个数据,返回指向该数组首元素的指针。
end是string和vector的成员,返回一个指向尾后迭代器。也是一个标准库函数,输入一个数据,返回指向该数组尾元素的下一个位置的指针。
缓冲区溢出(buffer overflow)一种严重的程序故障,主要的原因是试图通过一个越界的索引访问容器内容,容器类型包括string、vector和数组等。
C风格字符串(C-style string)以空字符结束的字符数组。字符串字面值是C风格字符串,C风格字符串容易出错。
类模板(class template)用于创建具体类类型的模板。要想使用类模板,必须提供关于类型的辅助信息。例如,要定义一个vector对象需要指定元素的类型:vector<int>包含int类型的元素。
编译器扩展(compiler extension)某个特定的编译器为C++语言额外增加的特性。基于编译器扩展编写的程序不易移植到其他编译器上。
容器(container)是一种类型,其对象容纳了一组给定类型的对象。vector是一种容器类型。常见的还有list、map。
拷贝初始化(copy initialization)使用赋值号(=)的初始化形式。新创建的对象是初始值的一个副本。
difference_type 由string和vector定义的一种带符号整数类型,表示两个迭代器之间的距离。
直接初始化(direct initialization)不使用赋值号(=)的初始化形式。
empty是string和vector成员,返回一个布尔值。当对象的大小为0时返回真,否则返回假。
getline在string头文件中定义的一个函数,以一个istream对象和一个string对象为输入参数。该函数首先读取输入流的内容直到遇到换行符停止,然后将诗篇的数据存入string对象,最后返回istream对象。其中换行符读入但是不保留。
索引(index)是下标运算符使用的值。表示要在string对象、vector对象或者数组中访问的一个位置。
左值(lvalue)是指那些求值结果为对象或者函数的表达式。一个表示对象的非常量左值可能作为同仁运算符的左侧运算对象。
右值(rvalue)是指一种表达式,其结果是值而非值所在的位置。
算术转换(arithmetic conversion)从一种算术类型转换成另一种算术类型。在二元运算符的上下文中,为了保留精确度,算术转换通常把较小的类型转换成较大的类型(如整型转换成浮点型)。
结合律(associativity)规定具有相同优先级的运算符。
实例化(instantiation)编译器生成一个指定的模板类或函数的过程。
迭代器(iterator)是一种类型,用于访问容器中的元素或者在元素之间移动。
迭代器运算(iterator arithmetic)是string和vector的迭代器的运算:迭代器与整数相加或相减得到一个新的迭代器,与原来的迭代器相比,新迭代器向前或向后移动了若干位置。两个迭代器相减得到它们之间的距离,此时它们必须指向同一个容器的元素或该容器尾元素的下一个位置。
以空字符结束的字符串(null-terminated string)是一个字符串,它的最后一个字符后面还跟着一个空字符(‘\0’)。
尾后迭代器(off-the-end iterator)end函数返回的迭代器,指向一个并不存在的元素,该元素位于容器尾元素的下一个位置。
指针运算(pointer arithmetic)是指针类型支持的算术运算。指向数组的指针所支持的运算种类与迭代器运算一样。
prtdiff_t是cstddef头文件中定义的一种与机器实现有关的带符号整数类型,它的空间足够大,能够表示数组中任意两个指针之前的距离。
push_back是vector的成员,向vector对象的末尾添加元素。
范围for语句(rang for)一种控制语句,可以在值的一个特定集合内迭代。
size是string和vector的成员,分别返回字符的数量或元素的数量。返回值的类型是size_type。
size_t是cstddef头文件中定义的一种与机器实现有关的无符号整数类型,它的空间足够大,能够表示数组中任意数组的大小。
size_type是string和vector定义的一种类型的名,能存放下任意string对象或vector对象的大小。在标准库中,size_type被定义为无符号类型。
using声明(using declaration)令命名空间中的某个名字可被程序直接使用。
using 命名空间::名字;
上述语句的作用是令程序可以直接使用名字,而无须写它的前缀部分命名空间::。
值初始化(value initialization)是一种初始化过程。内置类型初始化为0,类类型由类的默认构造函数初始化。只有当类包含默认构造函数时,该类的对象才会被值初始化。对于容器的初始化来说,如果只说明了容器的大小而没有指定初始化值的话,就会执行值初始化。此时编译器会生成一个值,而容器的元素被初始化为该值。
++运算符(++ operator)是由迭代器和指针定义的递增运算符。执行“加1”操作使得迭代器指向下一个元素。
[]运算符([] operator)下标运算符。obj[i]得到容器对象obj中位置i的那个元素。索引从0开始,第一个元素的索引是0,尾元素的索引是obj.size()-1。下标运算符的返回值是一个对象。如果p是指针、n是整数,则p[n]与*(p+n)等价。
->运算符(-> operator)箭头运算符,该运算符综合了解引用操作和点操作。a->b等价于(*a).b。
<<运算符(<< operator)标准库类型string定义的输出运算符,负责输出string对象中的字符。
>>运算符(>> operator)标准库类型string定义的输入运算符,负责读入一组字符,遇到空白停止,读入的内容赋给运算符右侧的运算对象,该运算对象应该是一个string对象。
!运算符(! operator)逻辑非运算符,将它的运算对象的布尔值取反。如果运算对象是假,则结果为真;如果运算对象是真,则结果为假。
&&运算符(&& operator)逻辑与运算符,如果两个运算对象对象都是真,结果为真。只有当左侧运算对象为真时才会检查右侧运算对象。
||运算符(|| operator)逻辑或运算符,任何一个运算对象是真,结果为真。只有当左侧运算对象为假时才会检查右侧运算对象。
隐式转换(implicit conversion)由编译器自动执行的类型转换。假如表达式需要某种特定的类型而运算对象是另外一种类型,此时只要规则允许,编译器就会自动地将运算对象转换成所需的类型。
整型提升(integral promotion)把一种较小的整数类型转换成与之最接近的较大整数类型的过程。不论是否真的需要,小整数类型(即short、char等)总是会得到提升。
顶层const (top-level const) 表示指针本身是个常量。
底层const (low-level const) 表示指针所指的对象是一个常量。