C++常见易忘知识点与常shi
vector的size和capacity
reserve 与 resize 是区别的:
reserve 用来给vector预分配存储区大小,即capacity的值 ,没有给这段内存进行初始化。reserve 的参数是推荐预分配内存的大小,实际分配的可能等于或大于这个值。这样做的好处就是消除当往vector插入数据时,size 超过原来的默认分配的capacity值时 所带来的 内存重分配开销。
resize 不仅会改变vector的capacity大小,而且会重置size值,
在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中的红黑树有一些变化,这些修改提供了更好的性能,以及对set操作的支持)。
int (*ff(int ))(int *, int )解读:这是一个函数指针,他所能够zhixiang的函数的输入为int 返回值为形如:int (*)(int * , int)的函数指针
函数中包含复杂的语法例如循环和递归,还有虚函数等,打多数编译器会拒绝将其作为inline函数进行优化。
如果有函数指针指向了inline函数,那么编译器会为这个函数生成一个本体(以便函数指针指向的地址确实存在一个函数)。
virtual函数是动态绑定,但是缺省参数值却是静态绑定