c++
seandepp
但是, 我拒绝.
展开
-
c/c++补完计划(七):哨兵节点
目录前言合并两个排序的链表反转链表最后前言解决链表问题, 经常会用一个空的节点进行辅助.合并两个排序的链表可以先考虑递归, 新建一个节点, 然后选择两个链表里面小的, 链到新建的节点. 之后移动被选择的链表, 递归这个问题.ListNode *Merge(ListNode *pHead1, ListNode *pHead2) { if (pHead1 == nullptr) { return pHead2; } if (pHead2 == nullp原创 2020-12-10 10:13:23 · 418 阅读 · 0 评论 -
c/c++补完计划(六):语法糖lambda
目录前言lambda表达式参数捕获thisfunctionbind最后前言很多语言都有lambda, c++自然不能缺, 在c++11里面加入了, 是程序猿喜欢的语法糖, 便于阅读, 也便于理解. 当然, 它有很多相关概念, 这里尽可能展开说.lambda表达式[capture list] (params list) mutable exception-> return type { function body }捕获子句(在c++规范中也称为lambda引导)参数列表可有可无.原创 2020-12-10 10:12:29 · 362 阅读 · 0 评论 -
c/c++补完计划(五):平衡二叉树和二叉搜索树
目录前言平衡二叉树判断自顶向下自底向上二叉搜索树的最近公共祖先最后前言来看维基的说明:AVL树:是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是O(logn){\displaystyle O(\log {n})}O(logn)。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。从查找树的角度来看, 还是非常实用的结构, 面试也很喜欢考, 我回想了一下, 在3家以原创 2020-12-10 10:11:35 · 166 阅读 · 0 评论 -
c/c++补完计划(四):字节对齐和虚继承
目录前言结构体大小类大小虚继承前言猪场最爱考的内容, 亲测.结构体大小先来看个基础的:#include <iostream>#pragma pack (8)using namespace std;struct A { char a; int b; double c;};int main() { // 1: 13 // 2: 14 // 4: 16 // 8: 16 cout << siz原创 2020-12-10 10:10:33 · 182 阅读 · 0 评论 -
c/c++补完计划(三):素数统计
目录前言常规方法欧拉筛选法前言统计所有小于非负整数 n 的质数的数量这是一道leetcode简单级别的, 本来没啥说的, 然后我发现了欧拉筛选法.常规方法常规思路就是对每个数x进行检测, 用x除以2到根号x, 有一个可以整除, 就不是素数.优点是连数组或者vector都不需要, 有一个算一个, 很节省空间.bool isPrime(int i) { for (int j = 2; j * j <= i; ++j) { if (i % j == 0)retu原创 2020-12-10 10:09:38 · 497 阅读 · 0 评论 -
c/c++补完计划(二):c字符串复制
目录前言正文前言c字符串复制的实现, 基本参考strcpy源码.和某面试官一番攀谈交心之后, 了解到之前的写法, 会有很多问题.正文void strCopy(char *dest, const char *str, int len) { if (str == nullptr) { return; } int strLen = strlen(str); int minLen = min(strLen, len - 1); dest[mi原创 2020-12-10 10:08:41 · 103 阅读 · 0 评论 -
c/c++补完计划(一):指针常量和常量指针
目录前言正文前言想写点c/c++的东西.正文一个题, 要写出以下4种情况的输出:int main() { const char *str1 = "ddddddd"; char *const str2 = "ddddddd"; char *str3 = "ddddddd"; char str4[] = "ddddddd"; *(str1 + 2) = 'a'; *(str2 + 2) = 'a'; *(str3 + 2) = 'a';原创 2020-12-10 10:07:16 · 93 阅读 · 0 评论