随笔分类 - C++
摘要:* [Effective STL 笔记-第1章 容器](https://www.cnblogs.com/Sherry4869/p/15128250.html) * [Effective STL 笔记-第2章 vector 和 string](https://www.cnblogs.com/Sherr
阅读全文
摘要:fgets 和 fscanf 对换行符的处理 fscanf int fscanf ( FILE * stream, const char * format, ... ); fscanf 将读取并忽略在下一个非空白字符之前遇到的任何空白字符(空白字符包括空格、换行符和制表符)。 fscanf 读取字符
阅读全文
摘要:7 在程序中使用STL 第 43 条:算法调用优先于手写的循环。 调用算法优于手写循环: 效率:算法比手写的循环效率更高。 正确性:手写循环比使用算法容易出错。 可维护性:使用算法的代码更加简洁明了。 例子:P155, 算法的名称表明了它的功能,而 for、while、do 循环不能。 手写循环需要
阅读全文
摘要:6 函数子、函数子类、函数及其他 第 38 条:遵循按值传递的原则来设计函数子类。 函数指针是按值传递的。 函数对象往往按值传递和返回。所以,编写的函数对象必须尽可能地小巧,否则复制的开销大;函数对象必须是单态的(不是多态),不得使用虚函数。 如果你希望创建一个包含大量数据并且使用了多态性的函数子类
阅读全文
摘要:5 算法 第 30 条:确保目标区间足够大。(inserter) transform 算法:使用 front_inserter 将导致算法将结果插入到容器的头部,使用 back_inserter 将导致算法将结果插入到容器的尾部。 向容器末尾添加新的对象(使用 back_inserter,适用于所有
阅读全文
摘要:4 迭代器 第 26 条:iterator 优先于 const_interator、reverse_interator 及 const_reverse_interator。 不同类型的迭代器之间的关系: 尽量使用 iterator 而不是 const 或 reverse 型的迭代器,可以使得容器的使
阅读全文
摘要:3 关联容器 第 19 条:理解相等(equality)和等价(equivalence)的区别。 find 对”相同“的定义是相等,是以 operator== 为基础的。但 x 和 y 有相等的值并不一定意味着它们的所有数据成员都有相等的值。 set::insert 对“相同”的定义是等价,是以 o
阅读全文
摘要:2 vector 和 string 第 13 条:vector 和 string 优先于动态分配的数组。 使用 new 动态分配内存时必须承担的责任: 确保以后用 delete 删除所分配的内存。 确保使用正确的 delete 形式。 确保只 delete 了一次。 普通数组的缺点: 没有提供 be
阅读全文
摘要:1 容器 第 1 条:慎重选择容器类型。 STL 容器不是简单的好,而是确实很好。 容器类型如下: 标准 STL 序列容器:vector、string、deque、list。 标准 STL 关联容器:set、multiset、map、multimap。 非标准序列容器 slist 和 rope。sl
阅读全文
摘要:++ 的优先级高于 *。 *a++ 等价于 *(a++); *++a 等价于 *(++a); #include <iostream> using namespace std; int main() { int test[] = {1, 2, 3, 4, 5}; int *a = test; cout
阅读全文