0. const_cast转换掉表达式的常量性以及volatile对象的volatile性;如const_cast<char *>ptr;编译器隐式执行的任何类型转换都可以由static_cast显式完成。reinterpret_cast通常对操作数的位模式执行一个比较低层次的重新解释。dynamic_cast支持在运行时刻识别由指针或引用指向的类对象。
1. typename是标准C++中新引入的关键字,用于template中。
2. 两个主要的顺序容器是list和vector,另外一个顺序容器是deque;两个主要的关联容器是map和set。
3. 选择顺序容器类型的一些准则:(1)随机访问,vector比list好得多;(2)已知道元素的个数,则vector比list强;(3)如果不只是在容器两端插入和删除元素,则list比vector强很多;(4)除非需要在容器首部插入和删除元素,则vector比deque好。对于小的数据类型,vector的插入大批量数据的性能比list好很多,而大型数据时则相反,解决方案是只保留大型数据的指针。Reserve函数容许将容器的容量设置成一个显式指定的值,resize函数重新设置容器的长度;每个容器支持一组关系操作符;用户定义的类类型必须支持等于操作符,必须支持小于操作符,元素类型必须支持一个缺省值(对类类型,指缺省构造函数)。
4. 除了iterator类型,每个容器还定义了一个const_iterator类型,对遍历const容器是必需的,const_iterator容许以只读方式访问容器的底层元素。Iterator算术运算只适用vector或deque,而不适用于list因为list在内存中不是连续存储的。
5. string类的find函数返回一个索引类型string::size_type或者返回string::npos;find_first_of提供了被搜索字符串中任意一个字符串相匹配的第一次出现,并返回它的索引位置,substr函数生成现有string对象的子串的一个拷贝,第一个参数指明开始的位置,第二个可选的参数指明子串的长度。Rfind,查找最后的指定子串的出现;find_first_not_of查找第一个不与要搜索字符串的任意字符相匹配的字符;find_last_of查找与搜索字符串任意元素相匹配的最后一个字符;find_last_not_of查找字符串中的与搜索字符串任意字符全不匹配的最后一个字符。
6. tolower函数接受一个大写字符,并返回与之等价的小写字母,必须包含头文件<ctype.h>,另外一些该文件中的函数,isalpha,isdigit,ispunct,isspace,toupper等。
7. assign对把字符串进行赋值;append则类似于+=操作符;swap交换两个string的值;进行越界检查的at类似于[]操作符;Compare函数提供了两个字符串的字典序比较;replace函数提供了十种方式,可以用一个或者多个字符替换字符串中的一个或多个现有的字符。
8. map定义了一个类型value_type,表示相关的键值对,用于insert函数。
9. 关联容器支持以下两个函数:find查找指定key,不存在则返回end();count返回指定key值的出现的次数。
10. set定义了一个类型difference_type,是两个iterator相减的结果类型;inserter类用来执行插入操作。如:copy(in, eos, inserter(set1, set1.begin());因为copy执行的是赋值操作,所以使用inserter使用插入操作取代赋值操作。
11. multiset和multimap的特殊操作equal_range返回iterator对值,如:pair<iterator, iterator> pos; pos = mp.equal_range(tst);
12. stack类,头文件<stack>,函数top和pop分别是访问栈顶元素和删除栈顶元素。栈类型是容器适配器,因为它把栈抽象施加到底层容器上,缺省情况下栈使用deque实现,可以自定义缺省的底层容器,如使用list构建stack:stack<int, list<int> > intStack;