
程序设计进阶
记录程序设计中学习到的新知识和新技能。
Gallant Hu
计算机视觉 机器学习 深度学习
展开
-
CMake Write once, run everywhere
首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。原创 2023-02-24 15:21:00 · 214 阅读 · 0 评论 -
C++ RAII
RAII 的做法是使用一个对象,在其构造时获取资源,在对象生命期控制对资源的访问使之始终保持有效,最后在对象析构的时候释放资源。原创 2023-02-24 12:13:36 · 188 阅读 · 0 评论 -
C++ vector的实现原理
c++ 数组删除制定元素原创 2022-09-17 18:33:03 · 515 阅读 · 0 评论 -
动态规划和递归的区别(简明)
动态规划会把递归树中间值存储下来,这样避免重复计算;递归是自顶向下,动态规划是自底向上。原创 2020-11-09 11:18:51 · 623 阅读 · 0 评论 -
注册机制让程序快速可扩展
我们为用户提供了一个注册机制来注入定制实现,这些实现可以立即在配置文件中使用。原创 2020-11-06 21:30:01 · 98 阅读 · 0 评论 -
从抽象到扩展--设计灵活的训练框架
训练基本流程class Trainer(): def __init__(): ... #定义基本参数 ... #定义三件套 self.model=create_model() self.optimizer=create_optimizer() self.data_loader=create_dataloader() self.learning_rate_adjuster=create_lr_adjuster() self.saver = create_saver(原创 2020-11-06 21:20:48 · 239 阅读 · 1 评论 -
类装饰函数实现注册器
python装饰器用函数装饰函数def wrapFun(func): def inner(a, b): print('function name:', func.__name__) r = func(a, b) return r return inner @wrapFundef myadd(a, b): return a + b print(myadd(2, 3))运行结果:function name: myadd原创 2020-11-06 19:55:16 · 697 阅读 · 1 评论 -
动态规划编程举例一(数字和为sum的方法数)
题目描述:给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。输入描述:输入为两行:第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)第二行为n个正整数A[i]A[i]A[i](32位整数),以空格隔开。输入输出举例:输入5 155 5 10 2 3输出4#include<iostream>#include<vector&g原创 2020-10-26 16:39:55 · 507 阅读 · 0 评论 -
动态规划求解背包问题--从选与不选说起
二维方程f[i,v]=max(f[i−1,v],f[i−1,v−c[i]]+w[i])f[i,v]=max(f[i-1,v],f[i-1,v-c[i]]+w[i])f[i,v]=max(f[i−1,v],f[i−1,v−c[i]]+w[i]) &原创 2020-10-09 15:50:45 · 276 阅读 · 0 评论 -
C++中 #和##的含义--编程举例
#在宏定义中表示把参数变为字符串##在宏定义中表示连接两个参数#include <iostream>using namespace std;#define OUTPUT(A) cout<<#A<<":"<<(A)<<endl;#define cons(a,b) a##bint main(){ int a = 1, b = 2; OUTPUT(a); OUTPUT(b); OUTPUT(a + b); cout &原创 2020-09-25 19:32:54 · 529 阅读 · 0 评论 -
使用关联容器:字符串处理--单词计数
单词计数忽略大小写和标点。例如:“example.” “example,” "Example"应该递增相同的计数器#include <iostream>#include<string>#include<map>#include<algorithm>using namespace std;string remove_punct(string str);int main() { map<string, size_t>word_co原创 2020-09-22 10:29:25 · 94 阅读 · 0 评论 -
函数指针:从入门到进阶编程实战
#include<iostream>#include<vector>using namespace std;//int fun_add(int a, int b);//typedef decltype(fun_add)* pf;//或者使用类型别名using pf = int(*)(int, int);vector<pf>pvec;int fun_add(int a, int b) { return a + b;}int fun_sub(int原创 2020-09-18 21:47:09 · 104 阅读 · 0 评论 -
排序算法的C++描述(code)
一般使用的八大排序算法是:插入排序、选择排序、冒泡排序、希尔排序、归并排序、快速排序、堆排序、基数排序以下均为从小到大排序冒泡排序void bubbleSort(vector<int> &s){ for (int i = 0; i < s.size(); i++){ for (int j = 0; j < s.size() - 1 - i; j++){ if (s[j] > s[j + 1]) swap(s[j]原创 2020-09-12 22:18:16 · 127 阅读 · 0 评论 -
对一组整数进行操作--使用vector容器的方法
读入一组整数并把它们存入一个vector对象,对其进行以下操作,并输出结果。#include<iostream>#include<vector>using namespace std;int main() { int integer; vector<int> number; while (cin>>integer) { number.push_back(integer); } //每对相邻整数的和输出出来 for (dec原创 2020-08-28 17:49:53 · 451 阅读 · 0 评论 -
字符大小写转换--采用vector容器的方法
从cin读入一组词并把他们存入一个vector对象,然后设法把所有词都改写为大写形式。输出改变后的结果,每个词占一行。这里使用了两种方法,一种是通过下标的方式,另一种是使用迭代器。#include<iostream>#include<string>#include<vector>#include<cctype>using namespace std;int main(){ string word; vector<string>原创 2020-08-28 17:32:55 · 374 阅读 · 0 评论 -
深入理解复制构造函数
构造函数复制构造函数深层复制构造函数原创 2020-08-26 21:04:58 · 96 阅读 · 0 评论 -
字符串的“增删改查”(原始方法)
子串的查找删除特定字符查找两个字符串的最大公共子串字符串的逆置插入字符原创 2020-08-26 21:01:57 · 233 阅读 · 0 评论 -
从工厂函数到设计模式
工厂函数In object-oriented programming (OOP), a factory is an object for creating other objects formally.A factory is a function or method that returns objects of a varying prototype or class from some ...原创 2019-12-30 17:14:40 · 135 阅读 · 0 评论 -
Python中@的用法
@是一个装饰器,针对函数,起调用传参的作用。@function’作为一个装饰器,用来修饰紧跟着的函数。def funA(desA): print("It's funA")def funB(desB): print("It's funB")@funB@funAdef funC(): print("It's funC")结果It’s funAIt’s ...原创 2019-11-19 10:00:35 · 292 阅读 · 0 评论