C++ 字符串分割 用过python语言的同学肯定知道,字符串split是一个非常好用的工具,但是很可惜的是C++并没有这样的函数((string, char) => vector<string>)供我们调用 这里我们来说一下用流实现的方法 首先明确流是什么? 流是一个对象,他创建了目标与源的连接。流可以从源获取信息,或者向目标地提供信息 对输入流来说,主要从中提取一些东西 operator>> 对输出流来说,主要将某些东西压入其中 operator<< C++有一个用于连…
C++ 字符串分割 用过python语言的同学肯定知道,字符串split是一个非常好用的工具,但是很可惜的是C++并没有这样的函数((string, char) => vector<string>)供我们调用 这里我们来说一下用流实现的方法 首先明确流是什么? 流是一个对象,他创建了目标与源的连接。流可以从源获取信息,或者向目标地提供信息 对输入流来说,主要从中提取一些东西 operator>> 对输出流来说,主要将某些东西压入其中 operator<< C++有一个用于连…
嵌套注释 这个问题来自《C Traps and Pitfalls》 请编写一个测试程序,要求无论是对允许嵌套注释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常编译(无错误消息出现),但是这两种情况下程序执行的结果却不相同。 提示:在用双引号括起的字符串中,注释符 /* 属于字符的一部分,而在注释中出现的双引号 "" 又属于注释的一部分 首先你可能会想,什么是嵌套注释 从编译器的角度来说,就是当处理注释的过程中,是允许继续读入 /* */ 这样的符号的 比如一个字符串 /*/**/ , 对于可以嵌套注释的编译…
链接 这篇文章是在我看完CSAPP第七章后对自己的理解做的一个总结, 也算是对书中第七章的内容做一个总结吧 适合已经看完第七章但是还没有把链接搞得很清楚的人,或者可以把这篇文章看做是对程序链接的一个概括,希望我的总结可以为你们带来启发 由于本人有点懒,所以并没有打算专门的画图来讲解,如果有同学没有看懂欢迎找我来讨论 这里我们用最简单的例子来进入今天的主题,假设你要两个c文件,main.c 和 sum.c,其中main里调用sum中的一个函数,我们使用这样的方式来编译这个程序 linux> gcc -o pro…
#include <stdio.h> int main() { int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; printf("%p\n%p\n", a[0], &a[0]); printf("%p\n%p\n%p\n%p\n", a[0] + 1, (&a[0] + 1), (&a[0]) + 1, a + 1); int (*p)[3] = &a[0]; int (*q) = a[0]; // printf("%p\n%p", ) prin…
colab使用教程 在这里稍微整理一下colab的使用教程,以便自己日后复习,或他人观看 现在感觉自己学习的过程像是在不断的刷漆,一遍又一遍,干了再刷,刷了再干,在此过程中逐渐凝实,并最终内化为自己的东西 首先colab是要配合google drive来进行操作的 我们先登入google drive 左上角new -> more -> google colaboratory 有关colab的介绍是什么,有什么强大的功能我就不说了,网上有很多人提到 左上角可以修改notebook的名字,我这里叫env,就是用来配置环…
莫里斯遍历 有关二叉树的遍历算法 非递归,无额外空间,时间复杂度O(n) 空间复杂度O(1) 很巧妙的遍历算法 核心思想就是利用树节点中的空指针 考虑非递归算法,如果我们不用栈的话,最主要的问题就是遍历完一个节点的左子树后怎么回到这个节点并遍历他的右子树 在遍历左子树的时候,最后一个遍历的节点一定是二叉树中序遍历中,当前节点的前一个节点 也就是当前节点左子树的最右边的节点 我们可以把这个前驱节点的右子树设为当前节点,这样遍历完左子树的时候,也就是遍历完这个前驱节点的时候,我们可以通过先前设置的那个指针回到当前节点,…
排序 区分的主要依据就是算法是否是基于比较的 leetcode排序 算法可视化 图是leetcode题解上的 这里不打算具体的说计数排序和桶排序,因为思路较为简单 代码均在leetcode上测试过,可以放心的使用 选择排序 class Solution { public: vector<int> sortArray(vector<int>& nums) { int n = nums.size(); for (int i = 0; i < n; i++) { int minn =…
c++新特性 nullptr 空指针 防止隐式的类型转换 NULL 和 0 constexpr 常量表达式 constexpr函数可以使用递归 constexpr int fibonacci(const int n) { return n == 1 || n == 2 ? 1 : fibonacci(n-1)+fibonacci(n-2); } 并且从c++14开始,constexpr函数内可以使用局部变量,循环,分支等简单语句 if/switch 语句初始化 c++17让我们可以在if或switch时对变量进行初…