【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
操作数中。

时间: 2024-08-07 19:15:10

【C++ Primer每日一刷之五】标准库类型小结的相关文章

C++ Primer笔记1_转义字符_标准库类型string_标准库类型vector

1.转义字符 一般有两种方式: \x后紧跟1个或多个十六进制数字.或\后紧跟1.2.3个八进制数字,当中数字部分是字符相应的数值. #include <iostream> using namespace std; int main() { bool b = 10; bool b1 = true; bool b2 = false; cout << b << endl; cout << b1 << endl; cout << b2 <

把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 相关的内存,因为vetcor是类模版,对应多个不同类型,比如int,string,或者自己定义的数据类型等. 程序开头应如下声明 #include <iostream> #include <vector> #include <string> using std::strin

C++ Primer 学习笔记_7_标准库类型(续1) -- vector类型

 标准库类型(二) --vector类型 引子: vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的内存. 我们将vector称之为容器,一个容器中的所有对象都必须是同一类型的! [cpp] view plaincopyprint? #include <vector> using std::vector; #include <vector> using std::vector; [模板] vector

C++ Primer 学习笔记_8_标准库类型(续2) -- iterator

 标准库类型(三) --iterator 序言: 迭代器是一种检查容器内元素并遍历容器元素的数据类型. 所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作:因此,现代C++更倾向于使用迭代器而不是下标操作访问容器元素. 正文: 1.容器的iterator类型 每个标准库容器类型都定义了一个名为iterator的成员: [cpp] view plaincopyprint? vector<int>::iterator iter; vector<int>::ite

C++ Primer 学习笔记_9_标准库类型(续3) -- biteset

 标准库类型(四) --biteset 序言: 位是用来保存一组项或条件的yes/no信息[标识]的简洁方法. [cpp] view plaincopyprint? #include <bitset> using std::bitset; #include <bitset> using std::bitset; 正文: 1.bitset对象的定义和初始化 和vector对象不同的是:bitset类型对象的区别在于其长度而不是类型.在定义bitest时,要在尖括号中说明给出他的长

C++ Primer 第四版读书笔记(二)之标准库类型

C++定义了一个内容丰富的抽象数据类型标准库,其中最重要的标准库类型是string和vector,它们分别定义了大小可变的字符串和集合.string和vector往往将迭代器用作配套类型,用于访问string中的字符,或者vector中的元素. 另一种标准库类型为bitset,提供了一种抽象方法来操作位的集合. string类型支持长度可变的字符串,vector用于保存一组指定类型的对象. bitset类标准库类型提供了更方便和合理有效的语言级的抽象设施.通过这个类可以把某个值当作位的集合来处理

【C++ Primer每日一刷之八】之八 C 风格字符串

4.3 C 风格字符串 尽管 C++ 支持 C 风格字符串,但不应该在 C++ 程序中使用这个类型.C 风格字符串常常带来许多错误,是导致大量安全问题的根源. 在前面我们第一次使用了字符串字面值,并了解字符串字面值的类型是字符常量的数组,现在可以更明确地认识到:字符串字面值的类型就是const char 类型的数组.C++ 从 C 语言继承下来的一种通用结构是C 风格字符串,而字符串字面值就是该类型的实例.实际上,C 风格字符串既不能确切地归结为 C 语言的类型,也不能归结为 C++ 语言的类型

【C++ Primer每日一刷之七】指针操作

4.2.3 指针操作 指针提供间接操纵其所指对象的功能.与对迭代器进行解引用操作一样,对指针进行解引用可访问它所指的对象,* 操作符(解引用操作符)将获取指针所指的对象: string s("hello world"); string *sp = &s; // sp holds theaddress of s cout <<*sp; // prints hello world 对 sp 进行解引用将获得 s 的值,然后用输出操作符输出该值,于是最后一条语句输出了 s

【C++ Primer每日一刷之八】之九 创建动态数组

4.3.1. 创建动态数组 数组类型的变量有三个重要的限制:[数组长度固定不变],[在编译时必须知道其长度],[数组只在定义它的块语句内存在]. 实际的程序往往不能忍受这样的限制--它们需要在运行时动态地分配数组. 虽然数组长度是固定的,但动态分配的数组不必在编译时知道其长度,可以(通常也是)在运行时才确定数组长度.与数组变量不同,动态分配的数组将一直存在,直到程序显式释放它为止.每一个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为程序的自由存储区或堆. C 语言程