首页 > 代码库 > 【C++ Primer每日一刷之五】标准库类型小结

【C++ Primer每日一刷之五】标准库类型小结


标准库类型小结

 

C++ 标准库定义了几种更高级的抽象数据类型,包括 string 和 vector 类型。string 类型提供了变长的字符串,而 vector 类型则可用于管理同一类型

的对象集合。迭代器实现了对存储于容器中对象的间接访问。迭代器可以用于访问和遍历 string 类型和vectors 类型的元素。下一节将介绍 C++ 的内置数据类型:数组和指针。这两种类型提供了类似于 vector 和 string 标准库类型的低级抽象类型。总的来说,相对于C++ 内置数据类型的数组和指针而言,程序员应优先使用标准库类类型。

 

 

标准库术语小节

abstract data type(抽象数据类型)

 

隐藏其实现的数据类型。使用抽象数据类型时,只需要了解该类型所支持的操作。

 

bitset

 

一种标准库类型,用于保存位置,并提供地各个位的测试和置位操作。

 

cctype header(cctype 头文件)

 

从 C 标准库继承而来的头文件,包含一组测试字符值的例程。


class template(类模板)


一个可创建许多潜在类类型的蓝图。使用类模板时,必须给出实际的类型和值。例如,vector 类型是保存给定类型对象的模板。创建一个 vector对象是,必须指出这个 vector 对象所保存的元素的类型。vector<int>保存 int 的对象,而vector<string> 则保存 string 对象,以此类推。container(容器)一种类型,其对象保存一组给定类型的对象的集合。

 

difference_type

一种由 vector 类型定义的signed 整型,用于存储任意两个迭代器间的

距离。

 

empty

由string 类型和vector 类型定义的成员函数。empty 返回布尔值,用于检测string 是否有字符或vector是否有元素。如果string 或vector的size 为0,则返回true,否则返回false。

 

getline

string 头文件中定义的函数,该函数接受一个istream 对象和一个string对象,读取输入流直到下一个换行符,存储读入的输入流到string 对象中,并返回istream 对象。换行符被读入并丢弃。

 

 

high-order(高阶)

 

bitset 对象中索引值最大的位。

 

index(索引)

 

下标操作符所使用的值,用于表示从string 对象或vector 对象中获取的元素。也称“下标”。

 

iterator(迭代器)

 

用于对容器类型的元素进行检查和遍历的数据类型。

 

iterator arithmetic(迭代器的算术操作)

 

应用于一些(并非全部)迭代器类型的算术操作。迭代器对象可以加上或减去一个整型数值,结果迭代器指向处于原迭代器之前或之后若干个元素的位置。两个迭代器对象可以相减,得到的结果是它们之间的距离。迭代器算术操作只适用于指向同一容器中的元素或指向容器末端的下一元素迭代器。


low-order(低阶)

bitset 对象中索引值最小的位。

 

 

off-the-end iterator(超出末端的迭代器)

由end 操作返回的迭代器,是一种指向容器末端之后的不存在元素的迭代

器。

push_back

由vector 类型定义的成员函数,用于把元素追加到vector 对象的尾部。sentinel(哨兵)一种程序设计技术,使用一个值来控制处理过程。在本章中使用由end操作返回的迭代器作为保护符,当处理完vector 对象中的所有元素后,用它来停止处理vector 中的元素。

 

 

size

 

由库类型string、vector 和bitset 定义的函数,分别用于返回此三个类型的字符个数、元素个素、二进制位的个数。string 和vector 类的size成员函数返回size_type 类型的值(例如,string 对象的size 操作返回string::size_type 类型值)。bitset 对象的size 操作返回size_t类型值。

 

size_t

 

在cstddef 头文件中定义的机器相关的无符号整型,该类型足以保存最大数组的长度。在cstddef 头文件中定义的机器相关的无符号整型,该类型足以保存最大数组的

长度。

 

size_type

 

由string 类类型和vector 类类型定义的类型,用以保存任意string 对象或vecotr 对象的长度。标准库类型将size_type 定义为unsigned 类型。

 

using declarations(using 声明)

 

使命名空间的名字可以直接引用。比如:

using namespace::name;

可以直接访问name 而无须前缀namespace::。

 

value initialization(值初始化)

当给定容器的长度,但没有显式提供元素的初始式时,对容器元素进行的初始化。元素被初始化为一个编译器产生的值的副本。如果容器保存内置类型变量,则元素的初始值将置为0。如果容器用于保存类对象,则元素的初始值由类的默认构造函数产生。只有类提供了默认构造函数时,类类型的容器元素才能进行值初始化。


++ operator(++操作符)

迭代器类型定义的自增操作符,通过“加1”移动迭代器指向下一个元素。


:: operator(::操作符)

作用域操作符。::操作符在其左操作数的作用域内找到其右操作数的名字。用于访问某个命名空间中的名字,如std::cout,表明名字cout 来自命名空间std。同样地,可用来从某个类取名字,如string::size_type,表明size_type 是由string类定义的。

 

 

[] operator([]操作符)

由string, vector 和bitset类型定义的重载操作符。它接受两个操作数:左操作数是对象名字,右操作数是一个索引。该操作符用于取出位置与索引相符的元素,索引计数从0 开始,即第一个元素的索引为0,最后一个元素的索引为obj.size() -1。下标操作返回左值,因此可将下标操作作为赋值操作的左操作数。对下标操作的结果赋值是赋一个新值到相应的元素。

 

* operator(*操作符)

迭代器类型定义了解引用操作符来返回迭代器所指向的对象。解引用返回左值,因此可将解引用操作符用作赋值操作的左操作数。对解引用操作的结果赋值是赋一个新值到相应的元素。

 

<< operator(<< 操作符)

 

 

标准库类型string 和bitset定义了输出操作符。string 类型的输出操作符将输出string 对象中的字符。bitset类型的输出操作符则输出bitset 对象的位模式。

 

>> operator(>> 操作符)

 

标准库类型string 和bitset定义了输入操作符。string 类型的输入操作符读入以空白字符为分隔符的字符串,并把读入的内容存储在右操作数(string 对象)中。bitset 类型的输入操作符则读入一个位序列到其bitset 操作数中。

 

 

 

【C++ Primer每日一刷之五】标准库类型小结