C++ Primer 读书笔记2
cctype 头文件中函数——处理String的方法——P82
函数 | 用法 |
---|---|
isalnum(c) | 如果参数是字母数字为真 |
isalpha(c) | 如果参数是字母为真 |
iscntrl(c) | 如果参数是控制字符为真 |
isdigit(c) | 如果参数是数字为真 |
isgraph(c) | 如果参数是除空格之外的打印字符为真 |
islower(c) | 如果参数是小写字母为真 |
isprint(c) | 如果参数是打印字符(包括空格)为真 |
ispunct(c) | 如果参数是标点符号为真 |
isspace(c) | 如果参数是标准空白字符为真,如空格、进纸、换行符、回车、制表符 |
isupper(c) | 如果参数是大写字母为真 |
isxdigit(c) | 如果参数是十六进制时为真 |
tolower(c) | 如果参数是大写字母,输出对应的小写字母;否则原样输出 |
toupper(c) | 如果参数是小写字母,输出对应的大写字母;否则原样输出 |
标准库类型vector——P86
# include < vector>
vector< int> v1(10); //v1有10个元素,每个元素为0
vector< int> v2{10}; //v2有一个元素值为10
函数 | 用法 |
---|---|
v.empty() | 如果v不含有任何元素,返回真否则返回假。 |
v.size() | 如果v中元素个数 |
v.push_back(t) | 在v的末端添加一个值为t的元素。 |
vector对象的下标运算符可用于访问已存在的元素,而不能用于添加元素。
(常见错误类型为缓冲区溢出(buffer overflow))
迭代器——P95
拥有迭代器的类型同时拥有begin和end的成员,其中begin成员负责返回指向第一个元素的迭代器。end成员则负责返回指向容器“尾元素的下一位置”的迭代器。
如果容器为空,begin和end返回同一个迭代器,都是尾后迭代器。
标准容器迭代器的运算符
函数 | 用法 |
---|---|
*item | 返回迭代器item所指元素的引用 |
iter->mem | 解引用iter并获取该元素的名为mem的成员,等价于(*iter).mem |
++iter | 令iter指示容器中的下一个元素 |
–iter | 令iter所指示容器中的上一个元素 |
== | 判断两个迭代器是否相等,如果两个迭代器指向的是同一个元素则相等;反之,不相等。 |
!= | 判断是否不等 |
因为end返回的迭代器并不实际所指示某个元素,所以不能对其进行递增或解引用的操作
容器一般使用iterator和const_iterator来表示迭代器的类型
箭头运算符把解引用和成员访问两个操作结合在一起。it->mem和(*it).mem表达的意思是一样的。
但凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素。
多维数组——P128
要使用范围for语句处理多维数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型。