常考基础点
无情的搬砖机器
不求甚解
展开
-
strcpy、strcat、strlen
1、strcpy函数可以分别使用for循环和while循环实现。返回指针的目的是为了实现链式操作,连续复制。 char* myStrcpy(char* dest,const char* src){ assert(dest!=nullptr);//检查传入参数的有效性 assert(src!-nullptr);//检查传入参数的有效性 if(dest==src)//判断...转载 2019-03-03 13:37:29 · 482 阅读 · 0 评论 -
硬币问题--回溯解法
#include<iostream> #include<vector> #include<algorithm> #include <cmath> using namespace std; class Solution { private: vector<vector<int>> res; int sum = 0;...原创 2019-09-04 22:02:59 · 1119 阅读 · 1 评论 -
分离个位数,十位数和百位数...
描述: 输入:int 类型 1234 输出:1 2 3 4 #include<iostream> #include<stack> using namespace std; stack<int> process(int num) { stack<int> sta; int chushu = num / 10; int yushu = ...转载 2019-07-13 14:02:26 · 2036 阅读 · 0 评论 -
二分法小记
二分任务都有很多相似的地方,成为常考知识点: 思路:准备left=0,right=num,然后在while循环中更新left和right,while循环终止条件为left>right,这里主要left=right也要考虑的,因为下面代码更新的时候使用的是left = mid-1,和right = mid+1 mid已经考察,但是mid+1和mid-1作为边界注意不要忘记考虑。 一、二...原创 2019-07-13 13:43:36 · 218 阅读 · 0 评论 -
二分查找
要求:数组有序 递归方式:判断中点是否和target相等,是直接返回中点索引。否则,如果比target大,则在左侧递归,否则在右侧递归 循环方式:判断中点是否和target相等,是直接返回中点索引。否则,如果比target大,更新右右边界,否则更新左边界 algorithm中sort对数组排序的用法:sort(p,p+n),p数组名,n数组长度 递归方式: int binary_...转载 2019-03-24 19:12:13 · 142 阅读 · 0 评论 -
进程和线程的区别
进程的缺点:进程占有系统资源,进程的切换操作也给操作系统带来了额外的开销。每次创建新进程会把父进程的资源复制一遍到子进程,如果创建多个进程的话,会占用大量系统资源,进程间的数据共享也需要操作系统的干预。由于进程的缺点,才提出了线程的概念。 线程是一种轻量级的进程。线程是操作系统调度的最小单位,一个进程是由一个或者多个线程组成的。在一个进程内部,多线程之间的资源是共享的,也就是说,一个进程内部...转载 2019-03-11 15:37:30 · 114 阅读 · 0 评论 -
链表操作(完)
C++实现链表操作 使用节点类构造节点 包括 创建链表,显示链表,插入节点,删除节点,查找节点,链表长度和反转链表 一、头文件 list.h 包括节点类的构造,各种操作函数的声明 #ifndef __LIST_H__ #define __LIST_H__ #include<iostream> #include<cstdlib>//size_t using n...原创 2019-03-19 21:24:58 · 330 阅读 · 0 评论 -
随机快排
题目: 输入:第一行输入数组大小,第二行输入数组元素。 输出 :最后排序的结果 要求:快排,并且可以实现多组输入测试 样例 输入: 5 3 1 4 5 2 输出: 1 2 3 4 5 #include<iostream> #include<cstdlib> using namespace std; void swap(int arr[], int i...原创 2019-03-10 19:06:30 · 230 阅读 · 0 评论 -
为什么要将类的析构函数声明为虚函数?
参考百度知道的答案(腾讯面试):https://zhidao.baidu.com/question/207712177.html 我们知道在类的继承中,构造函数的执行顺序是先构造基类然后再构造派生类,析构函数则相反,是先析构派生类再析构基类。我们也知道声明父类的指针指向派生类,编译器会默认实施静态绑定,不能调用派生类重写的函数,所以才需要虚函数。虚函数是通过虚函数表实现,在运行时进行动态绑定,可...转载 2019-03-02 21:56:00 · 1515 阅读 · 0 评论 -
类的静态成员函数
1\\类的静态成员函数可以直接通过类名访问,但是一般的成员函数则不可以. #include<iostream> using namespace std; class Point{ public: void init(){ } static void output(){ cout<<"静态成员函数的输出"<<...转载 2019-02-27 11:22:31 · 1189 阅读 · 0 评论 -
虚函数的实现原理
虚函数的实现原理: 虚函数的用法:可以让派生类重写基类的成员函数实现多态。虚函数实现多态的机制,严格来说是动态多态,是在出现运行的时候实现的。 虚函数的实现原理:每个虚函数都会有一个与之对应的虚函数表,该虚函数表的实质是一个指针数组,存放的是每一个对象的虚函数入口地址。对于一个派生类来说,他会继承基类的虚函数表同时增加自己的虚函数入口地址,如果派生类重写了基类的虚函数的话,那么继承过来的虚函...转载 2019-03-10 18:05:42 · 6716 阅读 · 0 评论 -
内联函数和宏的区别
转载自:https://blog.csdn.net/will130/article/details/48712453 在C++中一般使用内联函数而不适用宏主要有以下几个原因: 1\\内联函数在运行时可调试,而宏不可以 2\\编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会 3\\内联函数可以访问类的成员变量,宏定义不能 4\\在类中声明同时定义的函数,...转载 2019-03-03 20:25:15 · 795 阅读 · 0 评论 -
换零钱问题
这是一个比较经典的贪心问题,零钱各种有【1元,2元,5元、10元】现在给定n元要求换的的零钱张数最少。 思路:每一次都从10开始计算,求出n/10为零钱张数,再从剩下的零钱中去找n%10的零钱,一个递归过程。 #include<iostream> #include<vector> #include<algorithm> using namespace s...原创 2019-09-10 10:26:09 · 562 阅读 · 0 评论