huangjunkun / for-effective-stl

study and test for effective-stl

Home Page:for-effective-stl

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

/**
** project name:  for-effective-stl
** date:          2009-10-20 
** author:        junkun huang
** e-mail:        huangjunkun@gmail.com
** declare: 
  该工程存放内容说明,在学习《Effective STL》过程中,编写的测试性和研究性的代码。欢迎交流,谢谢!
  实验环境说明: Windows + CodeBlocks + MinGW
  btw. 遗失了其中一部分测试性代码啊,纯属学习型的>_< ...
**/
			《Effective STL》点滴

//---条款1:慎重选择容器类型 ----------------

//---条款2:不要试图编写独立于容器类型的代码 --------------

//---条款3:确保容器中的对象拷贝正确而高效 ------------

//---条款4:调用empty() 而不是检查size()是否为 0 --------

//---条款5:区间成员函数优先于与之对于的单元素成员函数 ----

//---条款6:当心 C++ 编译器最烦人的分析机制 ------------  

//---条款7:如果容器包含了通过new 操作创建指针,切记在容器对象析构前将指针delete掉 -----

//---条款8:切勿创建包含auto_ptr的容器对象 --------------

//---条款9:慎重选择删除元素的方法 -----------------------

//---条款10:了解分配子(allocator)的约定和限制 ---------

//---条款11:理解自定义分配子的合理用法 ----------------

//---条款12:切勿对 STL 容器的线程安全性有不且实际的依赖 -------------------

//---条款13:vector 和 string 优先于动态分配数组 -------

//---条款14:使用reserve 来避免不必要的重新分配 --------

//---条款15:注意string 的多样性()实现多样性  ----------- 包含:
// 1 .大小---size ,2 .容量---capacity ,3 .分配子---alloctor ,4 .引用计数 ----

//---条款16:了解如何把 vector 和 string 数据传给 就的API -----

//---条款17:使用 “swap技巧”除去多余的容量 vector ,string --------------

//---条款18:避免使用 vector<bool> ,使用 deque<bool> ,bitset 替代 -----

//---条款19:理解相等(equality)和等价(equivalence)的区别 ------

//---条款20:为包含指针的关联容器(亦其他容器)指定比较类型 !-----

//---条款21:总是让比较函数在等值情况下返回false ------------
//---比较函数的返回值表明的是按照改函数定义的排列顺序,一个值是否在另一个之前 ----

//---条款22:直接切勿修改set或是 multiset 中的键值 -----

//---条款23:考虑用排序的vector替代关联容器 --------

//---条款24:当效率至关重要时,请在map::operator[] 和 map::insert 之间谨慎做出选择-------

//---条款25:熟悉非标准的哈希容器--hash_container ------------------

//---条款26:iterator 优先于const_iterator、reverse_iterator、以及const_reverse_iterator
// --- iterator -> (隐式转换)const_iterator

//---条款27:使用 distence 和 advance 将容器的const_iterator转换 iterator

//---条款28 :正确理解有 reverse_iterator 的 base()成员函数所产生的iterator的用法

//---条款29 :对于逐个字符的输入请考虑使用 istreambuf_iterator ,对于逐个字符的输出请考虑使用 osstreambuf_iterator

//---条款30:确保目标区间足够大 ----------------------

//---条款31:了解各种与排序有关的选择 ----------------

//---条款32:如果确实需要删除元素 ,则需要在remove这类算法之后调用 erase-----

//---条款33:对于包含指针的容器使用remove这类算法时要特别小心! -----------

//---条款34:了解哪些STL算法要求使用排序区间作为参数 ----

//---条款35:通过 mismatch 或 lexicographical_compare 实现简单的忽略大小写

//---条款36:理解copy_if 算法的正确实现 ,STL没有包含copy_if的实现--------------

//---条款37:使用accumulate 或是 for_each 进行区间统计 ---

//---条款38:遵循按值传递的原则设计函数子类 ----

//---条款39:确保判别式是“纯函数” ---

//---条款40:若一个类是函数子,则应使它可配接 ----

//---条款41:理解ptr_fun ,mem_fun ,和mem_fun_ref的由来 ---

//---条款42:确保less<T> 与operator< 具有相同的语义 ---

//---条款48:总是包含(#include)正确的头文件 ----

//---条款49:学会分析与STL相关的编译器诊断信息 ----

//---条款50:熟悉与STL 相关的Web站点 ----

About

study and test for effective-stl

for-effective-stl


Languages

Language:C++ 72.0%Language:C 28.0%