1. Class和Struct的区别
在C++中Class对于成员访问权限和继承关系默认是private的,而Struct默认是public的。
2. 仿函数:
用Struct或者Class模拟成函数一样。仅仅只需要在类中维护必要的变量和重载运算符()即可。
3. 为什么用仿函数替代调用函数?
仿函数可以不留痕迹的传递上下文参数,而普通函数需要一个void* 指针进行传递。因为struct是默认成员访问权限是public的,可以直接调用struct的成员(Class设置为public也是一样的)。
而且仿函数具备更好的性能,因为编译器在编译期间就把仿函数的调用进行inline展开。如果函数简单并且定义为inline函数,也会在编译期间展开(为什么要inline?如果展开的话,就没有必要传入函数指针进而占用栈的空间,所以省去函数对栈空间的使用,但会一定程度上使得代码膨胀,用空间换时间的做法),但inline定义仅仅是对编译器的建议,如果func过大,编译器同样不会进行inline展开。但对仿函数的调用编译器是默认inline展开的。
4 有序数组中第k小元素378
STL模板中大多数都是用()来比较大小的, 如果要传入比较器那么就重构()
如果不想传入比较器,那么会默认比较使用less,此时仅仅需要重构<即可。
帮助记忆:前面小于后面的,那么sort的话就是上升的。priority queue就是大根堆,因为优先队列的首指针是指向队尾的。好记一些大不了试试就完了。
int kthSmallest(vector<vector<int>>& matrix, int k