learning
文章平均质量分 73
在这里学习
fang0jun
这个作者很懒,什么都没留下…
展开
-
文件操作汇总
为方便复习,汇总一下以前相关笔记的索引linux操作总结汇总:进程内存通信 C语言详解C中的系统调用open/close/read/writeC中文件操作复习最近有关linux文件操作的总结原创 2022-07-10 11:25:20 · 475 阅读 · 0 评论 -
字符串训练
文章目录处理输入的技巧针对类型转化针对复杂字符串解析例题日志排序处理输入的技巧针对类型转化// 字符串转数字stoi(str); // tointstod(str); // todouble// 数字转字符串to_string(type); //type可以是一系列数字类型针对复杂字符串解析1.按空格解析成字符串数组,直接使用stringstream// 解析成array类型// 按照空格分隔字符串并且转换成array类型#include <string>// s原创 2022-04-20 16:47:37 · 879 阅读 · 0 评论 -
Aacwing练习代码汇总
文章目录动态规划背包问题图论dfsbfs树与图的DFS树与图的BFS拓扑排序最短路相关Dijkstra 单源最短路径bellman-fordFloyd最小生成树相关PrimKruskal动态规划背包问题// 01背包#include <iostream>using namespace std;const int N = 1010;int n, m;int v[N], w[N];int f[N];int main() { cin >> n >&g原创 2022-04-19 16:42:00 · 1028 阅读 · 0 评论 -
C++DS的使用心得汇总(stack,queue)
stack初始化//stack<int> s1;//栈构造stack<int> s2(s1);//vector构造list<int> values {1,2,3,4,5};stack<int,list<int>> my_stack (values);//正确√stack<int> values {1,2,3,4,5}; //错误×stack常用方法top();//返回栈顶元素pop(); //弹出原创 2022-04-19 16:01:27 · 581 阅读 · 0 评论 -
C++STL的使用心得汇总(vector,string,map,list)
文章目录find()函数vector的findstring的findmap的findcount()函数vector的countstring的countmap的countvectorstringfind()函数vector的find// 寻找vec中数值10所在下标,返回10的迭代器auto it = find(vec.begin(), vec.end(), 10); if (it != vec.end()) cout << it - vec.begin(); //tip: c原创 2022-04-19 15:36:25 · 957 阅读 · 0 评论 -
背包问题汇总
背包问题:背包问题是动态规划非常重要的一类问题,它有很多变种,但题目千变万化都离不开我根据力扣上背包问题的题解总结的解题模板。负责任地说,吃透这一篇文章,力扣上所有背包问题拿过来就可以秒杀!背包定义:那么什么样的问题可以被称作为背包问题?换言之,我们拿到题目如何透过题目的不同包装形式看到里面背包问题的不变内核呢?我对背包问题定义的理解:给定一个背包容量target,再给定一个数组nums(物品),能否按一定方式选取nums中的元素得到target注意:1、背包容量target和物品nums的类原创 2022-04-13 15:52:36 · 1072 阅读 · 0 评论 -
几何视角下的线性代数(1)--- 向量,线性组合与矩阵
文章前后关联性较强,后文都是在前文的几何概念上展开。建议顺序阅读文章目录什么是向量?三种视角看向量什么是线性组合线性组合的概念空间的概念线性相关的几何概念空间的基的定义什么是矩阵什么是线性变换线性变换的可视化理解总结线性变换的几何本质:线性变换的表达式 --- 矩阵什么是向量?三种视角看向量物理专业视角:向量是有方向的箭头 eg: ----->计算机专业视角:向量是有序的数字列表 eg:[1, 2]数学专业视角: 向量是任何东西!只要能保证其两个相加或与常数相乘是有意义的。eg:小松..原创 2022-03-04 22:03:00 · 302 阅读 · 0 评论 -
几何视角下的线性代数(3)---基与特征
文章前后关联性较强,后文都是在前文的几何概念上展开。建议顺序阅读文章目录什么是基变换将她的基表示的坐标转换成自己的基表示将自己的基表示的坐标转换成她的基表示非自己的基的坐标系进行线性变换矩阵的线性变换有作用范围视角的转化什么是特征向量和特征值一种特殊的性质和特征向量特征向量的几何意义特征向量中计算特征基构成含特征基的线性变换什么是基变换核心在于:基的变换,就是通过矩阵进行的视角切换。ps: 下文用别人的基(非默认基)和自己的基(默认基)来区分两套不同坐标系的基。将她的基表示的坐标转换成自己..原创 2022-03-04 22:07:17 · 688 阅读 · 0 评论 -
拟合与回归——区别与联系
拟合并不特指某一种方法,指的是对一些数据,按其规律方程化,而其方程化的方法有很多,回归只是其中一种方法,还有指数平滑这样简单一些的方法,或者ARIMA,VAR,等等各种复杂一点的方法。拟合是一种数据处理的方式,不特指哪种方法。简单的说就是你有一组数据,觉得这组数据和一个已知的函数(这个函数的参数未定)很相似,为了得到最能表示这组数据特征的这个函数,通过拟合这种方式(具体的数学方法很多)求得参数。也有些拟合得到的参数并非是函数的参数,如神经网络,得到的是这个神经网络的参数。回归有线性回归和非线性回归,非原创 2021-02-03 11:46:50 · 5094 阅读 · 2 评论 -
C++异常捕获和处理
写在前面 异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个错误,返回退出码或者终止程序等等,此时我们只知道有错误,但不能更清楚的知道哪种错误,因此,使用异常,就把错误和处理分开来,由库函数抛出异常,由调用者捕获这个异常,调用者就可以知道程序函数库调用出现错误了,并去处理,而是否终止程序就把握在调用者手里了。1. 异常的抛出和处理异常处理的语句try区段:这个区段中包含了可能发生异常的代码,在发生了异常之后,需要通过t..转载 2020-12-30 14:26:42 · 2886 阅读 · 0 评论 -
haskell一些内置函数的实现和扩展(1)
– 实现lenlen' :: [a] -> alen' [] = 0len' (x: xs) = 1+len' xs– 实现求和Sumsum':: (Num a) => [a] -> asum' [] = 0;sum' (x:xs) = x + sum' xs– 实现head,取list第一个数head' :: [a] -> ahead' [] = error "empty list"head' (x:xs) = x– 取list第二个数headSec原创 2020-12-04 18:17:08 · 387 阅读 · 0 评论 -
haskell中 mod 与 rem 的区别
quot 是整数除法截至零rem 是整数余数,满足:(x quot y)*y + (x rem y) == xdiv 是整数除法向负无穷大截断mod 是整数模量,满足:(x div y)*y + (x mod y) == x当使用负数作为第二个参数并且结果不为零时,可以看出差异:5 `mod` 3 == 25 `rem` 3 == 25 `mod` (-3) == -15 `rem` (-3) == 2(-5) `mod` 3 == 1(-5) `rem` 3 == -2原创 2020-11-30 12:53:30 · 1171 阅读 · 0 评论 -
linux操作总结汇总:进程内存通信 C语言
#include <sys/wait.h>pid = wait(&status); // wait(NULL)WIFEXITED(status) 这个宏用来指出子进程是否为正常退出的,如果是,它会返回一个非零值。WEXITSTATUS(status) 当WIFEXITED返回非零值时,我们可以用这个宏来提取子进程的返回值,如果子进程调用exit(5)退出,WEXITSTATUS(status)就会返回5;如果子进程调用exit(7),WEXITSTATUS(status)就会.原创 2020-11-29 23:08:45 · 650 阅读 · 0 评论 -
《Haskell趣学指南》读书笔记(3):函数的语法
本章着手于Haskell独特的语法结构模式匹配lucky :: (Integral a) => a -> Stringlucky 7 = "Lucky Number"lucky x = "sorry"调用lucky时。模式会从上到下进行依次模式匹配,匹配成功则自动运行该句话,匹配失败则自动转到下一句模式匹配--阶乘 (模式匹配中也可以使用递归)factorial :: (Integral a) => a -> afactorial 0 = 1facto原创 2020-11-26 10:32:57 · 152 阅读 · 0 评论 -
《Haskell趣学指南》读书笔记(2):Type And Typeclass
前言:Haskell同python类似,支持类型推导,不需要额外告知数据类型。现在我们将理解haskell的类型系统Type相关|| :t 命令检测表达式的类型Prelude> :t "aaa""aaa" :: [Char] (tip: " :: " 读作 “它的类型”)下面我们研究 符号 —> ::|| “ :: ” 用于函数类型声明mylast :: [a] ->a --类型声明mylast[] = error"empty list"myla原创 2020-11-26 02:46:57 · 484 阅读 · 0 评论 -
《Haskell趣学指南》读书笔记(1):Ready Go
体外话: 修改命令行提示"prelude"的命令为: :set prompt "xxx"函数相关|| 函数书写的语法||| 命令行中写函数 ( 注意:在命令行中的函数声明,若没有参数,则等价于变量的初始化,称其为“定义”)doubleMy x = x + x;||| 在编辑器中写函数:用任一编辑器在文件中写函数:l 文件名 --加载文件中的函数|| 函数名的规则:函数名不允许首字母大写|| 函数中的选择条件语句:注意haskell中if与else必须同时出现(不能只写if)doubl原创 2020-11-25 22:32:43 · 281 阅读 · 0 评论 -
《Unix环境高级编程》读书笔记(7): 进程环境
进程终止:退出函数 exit() / _exit() / _Exit()退出登记函数#include<stdio.h>#include<stdlib.h>static void my_exit1(){ printf("the first exit\n");}static void my_exit2(){ printf("the second exit\n");}int main(){ atexit(my_exit1原创 2020-11-05 16:10:09 · 160 阅读 · 1 评论 -
标识符的作用域,链接,存储
文章目录1. 标识符的作用范围1.1 程序在编译时的结构1.2 作用域1.3 链接2. 标识符的生存期2.1 ▲静态存储期2.2 ▲自动存储期2.3 线程存储期2.4 动态分配存储期(malloc()与free())3. 标识符的储存3.1 自动存储 - 自动变量3.2 寄存器存储 - 寄存器变量3.3 静态无链接存储 - 块作用域的静态变量3.4 静态内部链接存储 - 内部链接的静态变量3.5 静态外部链接存储 - 外部链接的静态变量4. extern的使用4.1 作用一:防止编译器混淆同文件中的声明与定原创 2020-10-11 11:20:56 · 499 阅读 · 0 评论 -
字符串到底是什么?
文章目录字符串的本质字符串常量相关字符串数组和初始化字符串的本质// 探究一个字符串由什么构成#include<stdio.h>int main(){ char arr[50] = "asdasdasdasdasdasd"; printf("以%c打印整个字符串数组"); for(int i = 0; i < 50; i++)printf("%c ", arr[i]); printf("\n"); printf("以%d打印整个字符串数组"); for(int i原创 2020-10-08 01:30:59 · 1747 阅读 · 0 评论 -
《C Prime Plus》读书笔记(10):数组和数组指针
文章目录数组的初始化数组指针数组指针与数组下标的关系数组的初始化当数组为静态变量时(块作用域、外部链接、内部链接的静态变量),数组默认初始化为0当数组为自动变量时,数组的初始化方式:已知数组大小完全初始化和部分初始化自动匹配数组大小初始化#include<stdio.h>int arr1[5]; // 默认初始化static int arr2[5]; // 默认初始化int main(){ static int arr3[5] // 默认初始化 /*不可默原创 2020-10-07 17:34:27 · 104 阅读 · 0 评论 -
《C Prime Plus》读书笔记(12):标识符的作用域,链接,存储
1. 标识符的作用范围1.1 程序在编译时的结构1.2 作用域1.3 链接2. 标识符的生存期2.1 静态存储期2.2 动态分配存储期2.3 自动存储期2.4 线程存储期3. 标识符的储存3.1 自动存储 - 自动变量3.2 寄存器存储 - 寄存器变量3.3 静态无链接存储 - 块作用域的静态变量3.4 静态内部链接存储 - 内部链接的静态变量3.5 静态外部链接存储 - 外部链接的静态变量4. extern的使用4.1 作用一:防止编译器混淆同文件中的声明与定义4.2 作原创 2020-10-07 12:03:34 · 192 阅读 · 0 评论 -
c语言中extern的使用
文章目录extern的使用1. 作用一:防止编译器混淆同文件中的声明与定义2. 作用二:防止编译器混淆不同文件中声明与定义extern的使用1. 作用一:防止编译器混淆同文件中的声明与定义在使用外部链接和内部链接的静态变量时,为了防止同名变量的覆盖(防止编译器混淆声明与定义),我们按声明的位置把变量分为:外部变量(external variable):,把变量的定义性声明放在了所有函数外面的变量内部变量:自动变量,寄存器变量,静态变量#include<stdio.h>int n原创 2020-10-07 11:44:15 · 2879 阅读 · 0 评论 -
《C Prime Plus》读书笔记(14):各种特殊数据形式总结 struct/union/enum
文章目录struct结构1. 有关struct的声明1.1 结构模板名1.2 创建结构变量1.3 与typedef的配合2. 有关struct的初始化union联合enum枚举1. enum的语法2. enum中枚举符的赋值struct结构1. 有关struct的声明1.1 结构模板名struct { // 结构的模板(勾勒一个结构) int num; char arr[10];}; struct book{ // book为结构模板的名称 --- 模板名 int num; char原创 2020-10-06 23:41:17 · 230 阅读 · 0 评论 -
《算法4》读书笔记(2): dfs的c++实现
dfs实现#ifndef DFSCC_H_INCLUDED#define DFSCC_H_INCLUDED/*DFS 深搜思路:所有未标记的节点 执行一遍完整DFS遍历DFS代表从某一个节点出发 能到达的所有节点都会被标记*/#include"Graph.h"class DFS{private: vector<bool> marked; int count =0;public: DFS(Graph* G, int s){原创 2020-10-06 09:40:07 · 143 阅读 · 0 评论 -
《算法4》读书笔记(1): 图构建api的c++实现
文章目录1. 源码2. 总结2.1 c++中resize函数的用法2.2 更灵活的数据输入方式 ifstream getline() ifstringstream()c++中的 istringstream 的用法c++ 中getline函数用法详解1. 源码// 《算法》第四版中 图构建的相关API的c++实现#ifndef GRAPH_H_INCLUDED#define GRAPH_H_INCLUDED#include "func.h"class Graph{private: in原创 2020-10-05 23:32:21 · 132 阅读 · 0 评论 -
详解C中系统调用 link(), lseek()
C语言lseek()函数:移动文件的读写位置|| 头文件与函数定义#include <sys/types.h> #include <unistd.h>off_t lseek( int fildes, off_t offset, int whence);|| 函数说明:每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置原创 2020-09-30 10:23:48 · 905 阅读 · 0 评论 -
数据结构(严蔚敏)读书笔记(4): 串(KMP)
文章目录一,串二,串的模式匹配算法 - KPM1.什么是KMP2.为什么可以移位?1.从公式推导来说2.从直观来说3.对移位规则的实现 --- Next[]4.【一句话总结】在计算机中的实现KPM的流程1.KMP实现: i,j位比较,相等时S,T同进位,相异时T移位进行前缀匹配2.构建Next[]:找Next[j+1],就是看能否扩充T[1, j]中的子前缀5.具体代码实现和解释附:修正后的Next代码一,串|| 串(字符串) 是特殊的线性表,唯一的区别在于串的数据对象约束为字符集|| 串的储存结构原创 2020-09-28 16:09:46 · 285 阅读 · 0 评论 -
一句话总结KMP算法的实现流程(争取)
从公式上和直观上解释KMP算法。理解KMP算法的真正思想,并解释获得next的五行代码原创 2020-09-28 15:01:04 · 541 阅读 · 0 评论 -
数据结构(严蔚敏)读书笔记 (3): 栈和队列
文章目录顺序栈链栈有关递归顺序队列(循环队列)链队顺序栈#include<iostream>#include<stdlib.h>#include<bits/stdc++.h>using namespace std;#define OK 1#define ERROR 0#define MAX 1000typedef int ElemType;typedef struct { ElemType *base; ElemType *top; int原创 2020-09-27 22:35:34 · 257 阅读 · 0 评论 -
数据结构(严蔚敏)读书笔记 (2): 线性表
文章目录顺序表链表双向表顺序表#include<iostream>#include<stdlib.h>using namespace std;#define OK 1#define ERROR 0#define MAX 1000typedef int ElemType;typedef struct{ ElemType *elem; int length;}SqList;int InitList(SqList &L){ L.elem =原创 2020-09-27 20:41:45 · 170 阅读 · 0 评论 -
数据结构(严蔚敏)读书笔记 (1): 绪论
数据结构(严蔚敏)读书笔记 (1): 绪论原创 2020-09-26 10:44:18 · 197 阅读 · 0 评论 -
详解C中的系统调用open/close/read/write
先谈谈open/close/read/write与fopen/fclose/fread/fwrite的区别open() and close()read() and write()实操:代码示例1 将in.txt文件中的内容写入到out.txt文件中(一个一个字符写入)2 将in.txt文件中的内容写入到out.txt文件中(数组写入)原创 2020-09-23 10:01:35 · 3087 阅读 · 0 评论 -
C中文件操作复习
文章目录fopen()fputc() 和 fgetc()fgets()fputs()fread()和fwrite()读写函数的区别详解EOF|| FILE 是系统定义的一个类型,其中包含由文件的各种信息,如文件名,文件地址|| 我们一般使用FILE *fp —— 一个文件指针来操作文件fopen()|| fopen():用来以指定的方式打开文件,其原型为: FILE * fopen(const char * path, const char * mode); 打开成功时返回类型为文件指针,若打原创 2020-09-22 23:39:03 · 197 阅读 · 0 评论 -
文本文件和二进制文件的差异和区别
文章目录编码上的区别存取上的区别优缺点编码上的区别计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值(可以看作是自定义编码)。文本文件基本上是定长编码的(也有非定长的编码如UTF-8),基于字符,每个字符在具体编码中是固定的,ASCII码是8个比特的编码,UNICODE一般占1原创 2020-09-22 23:23:30 · 2680 阅读 · 0 评论 -
一篇文章搞定用git把项目推送到github
【 git 】更新:解决以下报错:在push前pull,更新本地仓库error: failed to push some refs to hint: Updates were rejected because the remote contains work that you dohint: not have locally. This is usually caused by another repository pushinghint: to the same ref.原创 2020-09-15 01:36:56 · 146 阅读 · 0 评论 -
高斯消元法解线性方程组和矩阵求逆(C++面向对象实现)
实现了两个向量和矩阵的基本类,针对处理对象创建了MatrixVector类和MatrixMatrix类有些地方为了保证代码耦合性,没有使用更低复杂度的写法(影响不大:)文章目录0. 预处理1. Vector向量类2. Matrix矩阵类3. MatrixVector类4. MatrixMatrix类5. 运行调用0. 预处理#include <iostream>#include <stdio.h>#include <stdlib.h>#include <原创 2020-09-14 17:53:55 · 1015 阅读 · 0 评论 -
【模板】Kruskal算法求最小生成树
文章目录Kruskal算法介绍模板实现例题Kruskal算法介绍克鲁斯卡尔算法可以称为“加边法”,初始最小生成树边数为0,每迭代一次就选择一条满足条件的最小代价边,加入到最小生成树的边集合里。把图中的所有边按代价从小到大排序;把图中的n个顶点看成独立的n棵树组成的森林;按权值从小到大选择边,所选的边连接的两个顶点ui,viui,vi,应属于两颗不同的树,则成为最小生成树的一条边,并将这两颗树合并作为一颗树。重复(3),直到所有顶点都在一颗树内或者有n-1条边为止。从小开始加 (权重),且确原创 2020-09-14 11:30:59 · 1018 阅读 · 0 评论 -
语法分析的一些总结
ps:此处处理的输入为 数学表达式(如 3+4*5…),不为词法分析器分析后的输出的单词流|| 语法分析的分析规则:上下文无关文法(定义:CFG(N, T, S, R)N - Nonterminal - 非终结符T - Terminal - 终结符S - Start Character - 开始符号R - Syntax Rule - 语法规则|| 语法分析的分析方式:语法分析器有不同的算法可以进行语法分析,一般来说,语法分析的算法分为两种,自顶向下的算法和自底向上的算法,而这两类算法又有很多原创 2020-09-13 17:20:14 · 2842 阅读 · 0 评论 -
C++语法学习_专栏目录
为了方便查阅复习,将自己原来撰写的博文进行整理,C++语法专栏目录如下:C++语法学习(0): 基础语法上与C的异同C++语法学习(1): 封装C++语法学习(2): 继承C++语法学习(3): 多态C++语法学习(4): 模板C++语法学习(5): STLC++语法学习(6): stringC++语法学习(7): vector(持续更新中)...原创 2020-09-13 14:19:14 · 134 阅读 · 0 评论 -
【模板】自动机
代码实现/* ---------------------模板-----------------------*/class Automaton { string state = "start"; unordered_map<string, vector<string>> table = { {"start", {"start", "signed", "in_number", "end"}}, {"signed", {"end", ..原创 2020-09-12 15:43:19 · 179 阅读 · 0 评论