搜索内容

包含标签:C++ 的文章
  • 类创建模式—单例模式(内容丰富)
    其他

    类创建模式—单例模式(内容丰富)

    单例、顾名思义存在一个,比如一些序号生成器、 某个时间段只能允许一个窗口获取---类似火车票,购票窗口很多,单一时间内只允许一个窗口生成车票序号。 定义:确保一个类只有一个实例、而且自行实例化并向整个系统提供这个实例,这个类为单例类。提供全局访问的方法。 定义抽象:1、这个类只能存在一个实例、2、自行实例 3、全局提供。 附注:本文涉及较多C++ 储备,会在文末进行统一解释,涉及静态成员变量/成员方法、对象实例化、锁、初始化列表、构造函数私有化等。在阅读本文困难的情况可以先看附注。 一个基本单例类图如下: 补充一个类图阅读常识: 类图最上为类名、Singleton 第二行:成员变量   第三行:成员方法。此处暂不讨论静态和友员 ;constrcut: 构造函数 “+”表示 public;“-”表示 private;“#”表示 protected;不带符号表示 default。抽象类斜体。  简单demo: Singleton.cpp #include "Singleton.h" #include
    admin 今天
  • 写文件fputs后为什么要fflush
    其他

    写文件fputs后为什么要fflush

    看ThinyWebSocket的时候有个疑问 #define LOG_DEBUG(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(0, format, ##__VA_ARGS__); Log::get_instance()->flush();} 为什么write之后还需要flush,这个flush有什么意义 void Log::flush(void) { m_mutex.lock(); //强制刷新写入流缓冲区 fflush(m_fp); m_mutex.unlock(); } 看注释强制书信写入流缓冲区,嗯,作用知道了,为啥需要这玩意儿呢?查了下资料,看到个例子大致清楚了 #include int main() { printf("hello"); sleep(5); printf(" world!\n"); return 0; } //先进入sleep,再打印
    admin 今天
  • leetcode-146. LRU 缓存机制
    其他

    leetcode-146. LRU 缓存机制

    leetcode-146. LRU 缓存机制 题目: 代码: #include #include #include using namespace std; struct DLinkedNode{ int key,value; DLinkedNode *prev,*next; }; unordered_mapcache; DLinkedNode* head,*tail; int size; int capacity; LRUCache(int _capacity):capacity(_capacity),size(0) { head = new DLinkedNode; tail = new DLinkedNode; head->next = tail; tail->prev = head; }
    admin 今天
  • 论文阅读 Going Deeper with Convolutions – GoogLeNet/Inceptionv1
    其他

    论文阅读 Going Deeper with Convolutions – GoogLeNet/Inceptionv1

    文章目录 1 摘要1.1 本文要解决的问题1.2 传统增加depth和width的后果 2 如何解决增加depth和width带来的问题2.1 提出 Inception 结构,人为构建稀疏连接,引入多尺度感受野和多尺度融合(增加特征的密度和相关性,简单说就是类似横向的特征金字塔,最后来个融合)2.2 使用 1X1 卷积(2.1带来的问题是3x3和5x5在较深的层中仍然会产生非常多的参数)2.3 辅助分类器 auxiliary classifiers(类似yolo中head层有不同层来输出结果,这个只是各自算上权重,没啥好说的) 1 摘要 1.1 本文要解决的问题 By a carefully crafted design, we increased the depth and width of the network while keeping the computational bud
    admin 今天
  • Floyd算法(附例题)
    其他

    Floyd算法(附例题)

    ps:算法题调代码的两个方法:cout法和删代码法 Floyd算法 采用动态规划思想,只要用三个循环就可以了,实现简单。k必须在最外层,i和j的顺序随意。d[i][j] = min(d[i][j], d[i][k] + d[k][j]);是核心代码。Floyd算法可以用来解决多源汇最短路问题,而且可以处理带负权边的多源汇最短路问题,但无法处理带负权回路的最短路问题。 AcWing 854. Floyd求最短路 给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。 再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。 数据保证图中不存在负权回路。 输入格式 第一行包含三个整数n,m,k 接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。 接下来k行,每行包含两个整数x,y,表示
    admin 今天
  • 【C++】2048游戏系列—优化模块第二稿【计分模块】
    其他

    【C++】2048游戏系列—优化模块第二稿【计分模块】

    2048游戏系列---优化模块第二稿【计分模块】 (更新中……) 参考博客:https://blog.csdn.net/qq_39151563/article/details/104283217 参考博客:https://blog.csdn.net/qq_39151563/article/details/104342730 由于放在一篇会导致篇幅太长,所以分成了几篇。(可能有个10篇吧=.=) 目前写完的: 【C++】2048游戏系列—总览篇【C++】2048游戏系列—功能模块第一稿【矩阵操作】【C++】2048游戏系列—功能模块第二稿【键盘输入】【C++】2048游戏系列—功能模块第三稿【添加新数】【C++】2048游戏系列—功能模块第四稿【结束检测】【C++】2048游戏系列—优化模块第一稿【加载图片】 本篇讲解计分模块的激活。 一、布局和计算 从参考博客偷来的布局图: 1.1-
    admin 今天
  • C++学习第六十五篇
    其他

    C++学习第六十五篇

    /* * 函数重载注意事项: * 1、引用作为重载条件 * 2、函数重载碰到函数默认参数(写重载函数时最好不设置默认参数了) */ #include using namespace std; //函数重载注意事项 //1、引用作为重载条件 void func(int &a) { cout << "func(int &a)的调用" << endl; } void func(const int& a) { cout << "func(const int& a)的调用" << endl; } //2、函数重载遇到函数默认参数 void func2(int a) { cout << "func(int a)的调用" << endl; } void func2(int a,int b = 10) { cout << "func(int a,int b = 10)的调用" << endl; } int main() { int a = 10; func(a); func(10); //func2(10);//f
    admin 今天
  • 位与(&)、位或(|)、异或(^) 、左移<<、右移>>、原码、反码、补码的简单应用
    其他

    位与(&)、位或(|)、异或(^) 、左移<<、右移>>、原码、反码、补码的简单应用

    一、位与(&)、位或(|)、异或(^) 1.位与运算(&):两位同时为1,结果才为1,否则为0 参加运算的两个数据,按二进制位进行“&”运算。 运算规则:0&0=0;  0&1=0;   1&0=0;    1&1=1; 例如:3&5  即 0000 0011& 0000 0101 = 00000001  因此,3&5的值得1。 “与&运算”的特殊用途(负数按补码形式参加按位与运算) (1)清零:如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。 (2)取一个数的指定位:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。 例:设X=10101110,  取X的低4位,用 X & 0000 1111 = 00001110 即可得到; int main() { //有符号的十六进制转化为十进制数 int a = 0xFF9C; //清除符号位 int b = a & 0x7FFF; //反码 int c = ~b;
    admin 今天
  • 新生研讨课作业:一个关于π/4的级数
    其他

    新生研讨课作业:一个关于π/4的级数

    新生研讨课老师给我们布置了作业:一个关于π/4的级数问题。这是我的两个程序框图作法: 一、 二、  两种方法都比较简单,浅显易懂。这里就不在赘述细节。 下面我们来讨论一下其中的数学观点:如果i不取前一百项,而是取到无穷呢? 也就是1-1/3+1/5-1/7+1/9-...- 事实上,这个问题也很好解决。 由arctan的麦克劳林展开,令x=1,arctan1=1-1/3+1/5-1/7+1/9+...+...=π/4.故该级数和为π/4. 事实上,这样有趣的结论不少,这里再举一个例子:1-1/2+1/3-1/4+1/5+....+...=ln2 证明是容易的:1+1/2+1/3+1/4+1/5+...+1/x=lnx+γ(欧拉常数)+o(lnx)                          1+1/2+1/3+1/4+1/5+.....+1/2x=ln2x+γ+o(ln(2x))                         两式子作差即可得到:              
    admin 今天
  • 场景网格实现,填充网格中对象
    其他

    场景网格实现,填充网格中对象

    1. 确定网格边界即世界坐标 通过屏幕坐标系,化为256*256的网格,但是Y轴只用到128  简单来书就是像比图比例尺18900:256 = 1:0.00044554 一个贴图会有屏幕坐标,然后进行缩放,计算在网格中的边界值(bounds) 2. 网格实现spatialGrid     // 根:对象 static inline void getCookie(int* raw, iso::IsoWorldCookie*& cookie) { // cppcheck-suppress pointerSize; 这就是它的意图 memcpy(&cookie, raw, sizeof(iso::IsoWorldCookie*)); } static inline void setCookie(int* raw, iso::IsoWorldCookie* cookie) { // cppcheck-suppress pointerSize ; 这就是它的意图 memcpy(raw, &cook
    admin 今天
  • 面试题 08.03. 魔术索引
    其他

    面试题 08.03. 魔术索引

    记录我的第一次java写题,开始跟着项目学java。 第一种,直接遍历。 class Solution { public int findMagicIndex(int[] nums) { int len= nums.length; for(int i=0;i
    admin 今天
  • AttributeError: module ‘paddle‘ has no attribute ‘batch‘ 解决办法
    其他

    AttributeError: module ‘paddle‘ has no attribute ‘batch‘ 解决办法

    AttributeError: module ‘paddle’ has no attribute ‘batch’ 解决办法 问题:AttributeError: module ‘paddle’ has no attribute ‘batch’ 解决办法: 卸载padle: pip uninstall paddlepaddle 重新安装: python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple 参考链接:https://www.jianshu.com/p/54f3a02e351b
    admin 今天
  • 【无标题】
    其他

    【无标题】

    C++编程之函数学习笔记一 1、复习函数的基本知识2、函数参数和按值传递3、函数和数组4、函数和二维数组5、函数和结构 C++自带了一个包含函数的大型库,也可根据需要编写自己的函数。本文主要复习函数的相关知识,明确如何定义函数、给函数传递信息以及从函数那里获得信息。使用函数处理数组、字符串和结构,学习递归和函数指针。 1、复习函数的基本知识 1.1 C++函数的结构 提供函数定义——function definition提供函数原型——function prototype调用函数——function call 1.2 函数定义 没有返回值void()类型 有返回值,必须使用return语句,将值返回给调用函数。 返回值可以是常量、变量,也可以是表达式。但返回值的类型必须为函数定义的类型或者可以被转换成相同的类型。 C++对返回值的类型有一定的限制:不能是数组,但可以是其它任意类型——整
    admin 今天
  • ubuntu更换清华源
    其他

    ubuntu更换清华源

    备份原有的软件源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.copy 编辑 sudo gedit /etc/apt/sources.list 找对应版本的清华源 网址:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 更新 sudo apt-get update
    admin 今天
  • linux 信号处理 二 (信号的默认处理)
    其他

    linux 信号处理 二 (信号的默认处理)

        有些信号的默认处理方式为“终止+core”,这里的core表示,进程终止时,会在进程的当前工作目录生产一个core文件,该文件是进程终止时的内存快照,以便以后供debugger调试用。     以下情况不会生产core文件:        (1)为程序设置了set-user-ID并且用户不是程序的所有者;        (2)为程序设置了set-group-ID并且用户不是程序的组所有者;        (3)进程在当前工作目录下面没有写权限;        (4)当前工作目录下已有core文件且进程对该core文件没有写权限;        (5)core文件过大。 各种信号产生条件和默认处理方式描述如下: SIGABRT     默认处理方式:终止+core;当程序调用abort函数时,会产生该信号。程序异常终止。 SIGALRM     默认处理方式:终止;当由alarm或setitimer函数设置的定时器超时时,会产生该信号。 SIGBUS     默认处理方式:终止+core;经常因为内存错误产生该信号。
    admin 今天
  • Python教程01
    其他

    Python教程01

    Python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 Python适合开发哪些类型的应用呢? 网络应用,包括网站、后台服务等等;日常需要的小工具,包括系统管理员需要的脚本任务等等;把其他语言开发的程序再包装起来,方便使用。 Python的缺点 运行速度慢,和C程序相比非常慢。代码不能加密。 Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。 第一个Python程序 敲命令python,进入到Python交互模式,它的提示符是>>>。输入exit()并回车,就退出了Python交互模式。也可以直接通过开始菜单选择Python (command line)菜单项,直接进入Python交互模式。 >>> print('hello, world') hello, world 在命令行模
    admin 今天
  • 3 无重复最长子串【c++,哈希表】
    其他

    3 无重复最长子串【c++,哈希表】

    解题思路 滑动窗口+哈希表 用unordered_maptemp_s记录单个字符和下标,记录每一次开始的下标left; 如果第i个字符不在哈希表中,就把这一个字符加进去,如果第i个字符在哈希表中,则left从i+1开始,子串长度为i-left+1 注: 找到的某一个字符不仅要在哈希表中,而且要在left和i之间才算,所以这里限制 if (it != temp_s.end()&&it->second>=left) 代码 class Solution { public: int lengthOfLongestSubstring(string s) { if (s.size() == 0) return 0; unordered_maptemp_s; int left = 0;
    admin 今天
  • 高频leetcode排序部分:88. 合并两个有序数组
    其他

    高频leetcode排序部分:88. 合并两个有序数组

    88. 合并两个有序数组 难度简单1201 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]解释:需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。 示例 2: 输入:
    admin 今天
  • Array.h数组模板
    其他

    Array.h数组模板

    Array.h 复习: 拷贝构造函数使用new在堆区开辟数据,delete销毁数据运算符重载[ ] 、> 、 =;直接使用assert(n >= 0 && n < size); //检查下标是否越界 #pragma once //Array.h #include using namespace std; #include //数组类模板定义 template class Array { public: Array(int sz = 50); //构造函数 Array(const Array &a); //拷⻉构造函数 ~Array(); //析构函数 Array operator = (const Array &rhs); //重载"="使数组对象可以整体赋值 T & operator [] (int i); //重
    admin 今天
  • 1252: [蓝桥杯2015初赛]奇妙的数字
    其他

    1252: [蓝桥杯2015初赛]奇妙的数字

    题目描述 小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗? 输出 请输出该数字,不要输出任何多余的内容。 时间限制: 1 Sec 内存限制: 256 MB 原题链接:http://oj.ecustacm.cn/problem.php?id=1252 #include using namespace std; int main() { set n; for(int i=10;i<100;i++){ int pf=i*i;//计算平方 int lf=pf*i;//计算立方 for(int j=pf;j>0;j/=10){ n.insert(j%10); } for(int j=lf;j>0;j/=10){ n.insert(j%10); } //调试部分
    admin 今天
  • 太难了,让程序员崩溃的 8 个瞬间
    其他

    太难了,让程序员崩溃的 8 个瞬间

    大家好,我是业余码农。程序员真是一个看起来挺牛逼,实际上很悲催的职业。 虽然说用代码创造世界是一件很爽的事情,但很多时候可能某个瞬间就会被整破防,情绪一激动一上头来那可是啥是都干得出来! 最近做需求比较烦躁,时常让我感觉到崩溃。有时候不仅app crash了,人也崩溃了。于是乎总结了一下让程序员 crash 的 8 个瞬间。 一、当产品变更需求时 作为开发的死对头,产品经理的存在一定是为了不让程序员好过才被设立出来的吧。 就像是为了防止物种入侵一样,产品的存在就是制约程序员过度繁殖,从而导致生态毁灭。 而产品的有效武器大概就是通过不断的修改需求,来达到控制程序员数量的目的。 当产品经理在需求群里at某个程序员的时候,大概率准是没好事的。所以在产品经理开始at你,让你修改需求时,大概是想打人的心都有了吧。 然而最可怕的是,当你辛辛苦苦百度谷歌了几天,用了一系列非常极客的技术来实现了某个功能。
    admin 今天
  • 归并排序思想,以及代码实现
    其他

    归并排序思想,以及代码实现

    归并排序 将区间不断二等分,二等分… 然后一个接一个合并 假设merge_sort(int a[],int l,int r) 为 此次划分的区间为l到r,如何继续划分以及排序的问题 代码如下: int a[N],temp[N]; void merge_sort(int a[],int l,int r){ if(l>=r) return ; int mid=l+r>>1; // 划分区间,使得l到mid有序,mid+1到r有序 merge_sort(a,l,mid); merge_sort(a,mid+1,r); //现在考虑区间合并问题 int k=0,i=l,j=mid+1; while(i<=mid&&j<=r) if(a[i]<=a[j]) temp[k++]=a[i++]; else temp[k++]=a[j++]; while(i<=mid) temp
    admin 今天
  • cmake使用教(二) install的使用
    其他

    cmake使用教(二) install的使用

    这里主要介绍使用cmake进行install方面的操作: 通过cmake可以 安装的内容可以包括目标二进制、动态库、静态库以及文件、目录、脚本等,下面分别进行简述一下: 细节可以参考官网,这里简单描述一下 1.目标文件的安装 install(TARGETS targets... [EXPORT ] [RUNTIME_DEPENDENCIES args...|RUNTIME_DEPENDENCY_SET ] [[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE| PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE] [DESTINATION ] [PERMISSIONS permissions...] [CONFIGURATIONS [Debug|Release|...]] [COMPONE
    admin 今天
  • 506相对名次【c++,map】
    其他

    506相对名次【c++,map】

    解题思路 map底层实现是一棵红黑树,按照key值升序排列,题目给出分数各自不同 分情况讨论: n=1:这个人就是金牌n=2:两个人比较一下得出金银牌n>=3 用一个maptemp来存放分数和下标值(下标值代表第几位)。根据排序的结果从第1到n-3位的名次就是他们分数的名次,我们已知map是升序排列,因此在map中的第一位名次是n,以此类推。在map中的最后三位分别是金银铜牌。 map查找的时间复杂度是O(logn),最终的时间复杂度是O(n*logn) 代码 class Solution { public: vector findRelativeRanks(vector& score) { int n=score.size(); vectoranswer(n); if(n==1){
    admin 今天
  • 关于句柄的概念
    其他

    关于句柄的概念

           身为新入行的萌新,作者在学习汽车网络测试工程时,发现了句柄这个玩意,多方搜索,总结以下内容,错误之处请指正: 1、什么是句柄?        句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量—引自科学百科        通过参考网上各路大神的解释,个人认为:句柄就是健康码,它的作用就是让你找到所需的对象去到了何处,因为你始终都可以根据健康码找到对象的所在地,然后找到对象给他做核酸检测。健康码(句柄值)是国家(操作系统)分给你的,你没有自定义的权利。        在操作系统中,我们想要操作一个对象,就要知道它的地址,但是对象的内存地址总是变化,因为在windows系统中的内存管理一般会将当前处于空闲状态的对象的内存释放掉,当需要访问的时候再重新提交分配物理内存,从而导致对象的物理地址是变化的。此时windows就搞了一个玩意—句柄,
    admin 今天
  • 【leetcode】53最大子数组和(c++&python)
    其他

    【leetcode】53最大子数组和(c++&python)

    目录 问题: 分析 代码 参考: 问题: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出:1 示例 3: 输入:nums = [5,4,-1,7,8] 输出:23 分析 方法一:动态求和。我们用 f(i) 代表以第 i个数结尾的【连续子数组的最大和】,用一个循环求出所有f(i)。考虑到 f(i) 只和 f(i−1) 相关,于是我们可以只用一个变量 pre 来维护对于当前f(i) 的f(i−1) 的值是多少,从而让空间复杂度降低到 O(1),这有点类似「滚动数组」的思想。 方法二:分治算法。(彻底搞明白再补上) 代码 //方法一:动态求和 class Solution { public: int maxSubArra
    admin 今天
  • C~指针知识
    其他

    C~指针知识

    文章目录 一、指针是什么?二、指针和指针类型2.1 指针+- 整数2.2 指针的解引用 三、野指针3.1 野指针原因3.2 如何规避野指针 四、指针运算4.1 指针 +- 整数4.2 指针 - 指针4.3 指针的关系运算 五、指针和数组六、二级指针 一、指针是什么? 指针理解的两个要点: 指针是内存中一个最小单元(字节)的编号,也就是地址平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 内存 指针变量 可以通过&(取地址操作符)取出变量的起始内存地址,把地址可以存放在一个变量中,这个变量就是指针变量 #include int main() { int a = 10; //在内存开辟一个整型空间(4个字节),将10初始化给这个空间 int* p = &a;//对变量a使用&取出它的地址,a变量占用4个字节空间, /
    admin 今天
  • Linux交叉编译环境下g++的选择
    其他

    Linux交叉编译环境下g++的选择

    Linux交叉编译环境里有很多g++,每一个交叉编译环境都有一个gcc g++ 这个时候通过执行创建环境变量的脚本来设置当前使用的交叉编译环境(中的g++) 查看当前交叉编译环境source语句创建了哪些环境变量: # env 这时候可以看到导出的g++被重新导出为一个环境变量: CXX=a***********-linux-g++  --sysroot=/usr/loca******************linux 在命令行调用导出的CXX: # $CXX main.cpp -o main.exe  即可编译。 但是如果用这个CXX编译一些工程,比如makefile,就需要让makefile知道用这个CXX。 标准化的makefile文件里都会抽象一层,让你指定具体的g++,这时候你根据makefile里的格式按照导出环境变量填空就行了。让makefile里最终使用的正好是交叉编译环境导出的g++即可。 一般交叉编译环境为了这样的场景,都会导出各种恰当的环境变量给你填空用。非常人性化。 这时候需要注意的是make
    admin 今天
  • C++调用C#的库
    其他

    C++调用C#的库

    暂时还不知道如何用cmake导入使用C#的dll 能使用C++的解决方案来导入 设置:项目属性 我电脑上是设置了三个地方(才能保证后面的导入命名空间不出错) 1. 2. 3. 虽然不知道具体原因,但是查了很多文章之后最后找到这个办法是可行的 之后就能导入C#的命名空间了 方法:导入库 #include #include #pragma comment(lib,"ws2_32.lib") //#using "D:\\haatrpc2021\\bin\\Debug\\MBoardDebug.dll" #using "../x64/Debug/MBoardDebug.dll" #pragma managed //导入C#dll的命名空间 using namespace MBoardDebug; 使用 //创建摄像头拍照的类,Program为库中定义的类
    admin 今天
  • C语言实现字符串分割
    其他

    C语言实现字符串分割

    #include #include #include //字符分割 void split(char *src, const char *separator, char **dest, int *num) { /* src 源字符串的首地址(buf的地址) separator 指定的分割字符 dest 接收子字符串的数组 num 分割后子字符串的个数 */ char *pNext; int count = 0; if (src == NULL || strlen(src) == 0) //如果传入的地址为空或长度为0,直接终止 return; if (separator == NULL || strlen(separator) == 0) //如未指定分割的字符串,直接终止 return; pNext = (ch
    admin 今天
  • PAT-A 1004 Counting Leaves (30 分)
    其他

    PAT-A 1004 Counting Leaves (30 分)

    家庭关系可以用家谱树来表示,给定一个家谱树,你的任务是找出其中没有孩子的成员。 输入格式 第一行包含一个整数 N 表示树中结点总数以及一个整数 M 表示非叶子结点数。 接下来 M 行,每行的格式为: ID K ID[1] ID[2] … ID[K] ID 是一个两位数字,表示一个非叶子结点编号,K 是一个整数,表示它的子结点数,接下来的 K 个 ID[i] 也是两位数字,表示一个子结点的编号。 为了简单起见,我们将根结点固定设为 01。 所有结点的编号即为 01,02,03,…,31,32,33,…,N。 输出格式 输出从根结点开始,自上到下,树的每一层级分别包含多少个叶子节点。 输出占一行,整数之间用空格隔开。 数据范围 0
    admin 今天
  • C++调用C#库用到的几个类型转换:C++string转换成C#的String,C++string转C#的byte
    其他

    C++调用C#库用到的几个类型转换:C++string转换成C#的String,C++string转C#的byte

    Program为C#dll中定义的类,需要调用它里面的接口 Program^ c = gcnew Program(); 1.C++string转换成C#的String string recv_buf2; String^ inifile = gcnew String(recv_buf2.c_str()); c->open_camera(inifile); 2.C++string转C#的byte string recv_devaddr="0x18"; BYTE devaddr; bool result1 = str2byte(recv_devaddr, devaddr); c->read_register(devaddr,str1, read_mode); //最后传入的就是byte类型的0x18 str2byte函数是借鉴另外的博文 bool str2byte(const std::stri
    admin 今天
  • Chromium DNS流程分析之SystemHostResolverCall 域名解析调用堆栈
    其他

    Chromium DNS流程分析之SystemHostResolverCall 域名解析调用堆栈

    chromium56:SystemHostResolverCall域名解析调用堆栈 概述 在Android平台上,Chromium主要支持三种DNS机制,分别为基于系统调用的getaddrinfo(),自己构造数据包并处理请求的AsyncDNS,以及基于TCP的DNS协议。本文暂时仅分析前两者,事实上最后一项是在普通DNS请求失败时所进行的fallback,没有什么特殊的地方。 核心思路 首先,DNS解析的实际操作由HostResolverImpl::Job::Start()函数发起,该函数所属的类继承自PrioritizedDispatcher::Job以及HostResolverImpl::DnsTask::Delegate。由这个多重继承可见,HostResolverImpl::Job实际上具备两种属性:一方面,它是一个能够被调度执行的任务实体;另一方面,它继承了DnsTask的委托接口,用于执行实际的请求工作。通用的抽象Job类主要包含一个Start()方法,用于启动任务。而对于DNS请求这项任务,其Start()方法也
    admin 今天
  • g20学习
    其他

    g20学习

    学习图优化g20 1. https://www.cnblogs.com/gaoxiang12/p/5244828.html https://www.cnblogs.com/gaoxiang12/p/5304272.html 2. https://wym.netlify.app/2019-07-05-orb-slam2-optimization2/ 3. https://mp.weixin.qq.com/s?__biz=MzIxOTczOTM4NA==&mid=2247486858&idx=1&sn=ce458d5eb6b1ad11b065d71899e31a04&chksm=97d7e81da0a0610b1e3e12415b6de1501329920c3074ab5b48e759edbb33d264a73f1a9f9faf&scene=21#wechat_redirect https://mp.weixin.q
    admin 今天
  • LeetCode刷题笔记 双指针 碰撞指针
    其他

    LeetCode刷题笔记 双指针 碰撞指针

    碰撞指针简介 碰撞指针 Opposite directional:两个指针指向同一线性表,但是遍历方向相反,一个指针指向开头,另一个指向末尾,它们相向移动直到相遇或满足其他特殊条件为止 344 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。 输入一个字符数组,输出将其反转的字符数组 输入:s = [“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”] 解析: ​ 本题使用双指针可以快速简单地解决。我们定义一对碰撞指针分别指向字符数组的头和尾,然后循环执行如下两步,直到两指针相遇循环终止: 交换 head 和 tail 指向的元素head 和 tail 相向移动一步 class Solution { public: void reverseString(vector& s) { int head = 0
    admin 今天
  • C++解OJ题——合并两个有序数组(每天一个小技巧)
    其他

    C++解OJ题——合并两个有序数组(每天一个小技巧)

    原题如下:   给你两个按非递减顺序排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。   请你合并 nums2 到 nums1 中,使合并后的数组同样按非递减顺序排列。   注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 审题:   数组本身有序,将两个数组合并为一个数组,合并后的数组依旧要保持有序。合并到nums1数组中,大小已经给定。并且由其解释的信息要求所设计的算法是一个稳定的算法。 代码设计:   根据题干描述信息可以得出,合并后的数组的最后一个位置的数据是原两个数组中最大的一个数据。而这最大的一个数据来源于两数组有效数据的最后一个的大者。同理
    admin 今天
  • C++面向对象之虚函数
    其他

    C++面向对象之虚函数

    #include using namespace std; class Human{ public: virtual void buyTicket(){ cout<<"Human buy ticket"<< endl; } }; class Teacher: public Human{ public: virtual void buyTicket(){ cout<<"Teacher buy ticket"<< endl; } }; class Student: public Human{ public: virtual void buyTicket(){ cout<<"student buy ticket"<< endl; } }; int main() { Human *p; p = new Teache
    admin 今天
  • " alt="C++运算符重载(01)">
    其他

    C++运算符重载(01)

    运算符重载简介        所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。同样运算符重载(Operator Overloading)可以让同一个运算符可以有不同的功能。 格式 C++ 规定,下标运算符[ ]必须以成员函数的形式进行重载。该重载函数在类中的声明格式如下: 返回值类型 & operator[ ] (参数); const 返回值类型 & operator[ ] (参数) const; 使用第一种声明方式,[ ]可以访问元素,还可以修改元素。使用第二种声明方式,[ ]只能访问不能修改元素 规则 不能重载的运算符有 .  和 .* 和 ?: 和 ::  和 sizeof 友元函数和成员函数的使用场合:一般情况下,建议一元运算符使用成员函数,二元运算符使用友元函数         1、运算符的操作需要修改类对象状态,使用成员函数。如需要做左值操作数的运算符(如=,+=,++)         2、运算时,有数和对象的混合运算时必
    admin 今天
  • HttpStreamParser::SendRequest http数据请求发送
    其他

    HttpStreamParser::SendRequest http数据请求发送

    chromium56:HttpStreamParser::SendRequest 发送请求数据调用堆栈 通过状态机控制运行到 HttpStreamParser::DoSendHeaders 进行socket通信
    admin 今天
  • PAT-A 1021 Deepest Root (25 分)
    其他

    PAT-A 1021 Deepest Root (25 分)

    一个无环连通图可以被视作一个树。 树的高度取决于所选取的根节点。 现在,你要找到可以使得树的高度最大的根节点。 它被称为最深的根。 输入格式 第一行包含整数 N,表示节点数量。 节点编号为 1∼N。 接下来 N−1 行,每行包含两个整数,表示两个节点之间存在一条边。 输出格式 输出最深的根的节点编号。 如果最深的根不唯一,则按照从小到大的顺序,将它们依次输出,每个占一行。 如果给定的图不是树,输出 Error: K components,其中 K 是图中连通分量的数量。 数据范围 1≤N≤104 输入样例1: 5 1 2 1 3 1 4 2 5 输出样例1: 3 4 5 输入样例2: 5 1 3 1 4 2 5 3 4 输出样例2: Error: 2 components 思路:(1)判断一下连通分量(2)从1号节点开始找到最深的节点(3)然后从找到的其中之一继续寻找最深的节点(4)将
    admin 今天
  • c++项目
    其他

    c++项目

    这里写自定义目录标题 c++ 作用域涉及到的知识点: https://www.cnblogs.com/wolf-lifeng/p/3156920.html 声明、定义、实现的区别 我们可以将整个C++程序(在程序中包括各种类型,函数,模版,变量等,并且分布在很多个*.cpp文件中)看成一个很大的整体区域。为了方便对C++程序中已经定义的各种类型,函数,模版,变量的管理,可以把这片大的区域划分成一片片小的命名区段。然后根据各个类型,函数,模版,变量的功能以及用途等,再把这些类型,函数,模版,变量等分别放置在不同的区段中。这些小的区段叫做作用域,C++程序支持四种形式的作用域,分别是:名字空间作用域,类域,局部作用域,语句作用域。
    admin 今天
  • shift cipher (a kind of encryption and decryption method)
    其他

    shift cipher (a kind of encryption and decryption method)

    The first function could delete the empty space in your plaintext.  the outputs: The original plaintext: I love you more. The plaintext without empty space: Iloveyoumore. The corresponding codes: //realize the shift cipher encryption scheme #include #include #include #include #include using namespace std; void str_to_vec(string str, vector &vec); void disp_vec(vector vec); void Gen(); int main() { c
    admin 今天
  • 滑雪 (记忆化搜索)
    其他

    滑雪 (记忆化搜索)

    滑雪 给定一个 R 行 C 列的矩阵,表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。 一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。 当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。 下面给出一个矩阵作为例子: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 在给定矩阵中,一条可行的滑行轨迹为 24−17−2−1。 在给定矩阵中,最长的滑行轨迹为 25−24−23−…−3−2−1,沿途共经过 25 个区域。 现在给定你一个二维矩阵表示滑雪场各区域的高度,请你找出在该滑雪场中能够完成的最长滑雪轨迹,并输出其长度(可经过最大区域数)。 输入格式 第一行包含两个整数 R 和 C。 接下来
    admin 今天
  • C++ STL学习路线及笔记
    其他

    C++ STL学习路线及笔记

    什么是STL C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。 C++ 标准模板库的核心包括以下三个组件:容器、算法、迭代器。 容器 ​​​​​​​STL学习笔记 - pyyyyyy - 博客园 (cnblogs.com) vector 是采用倍增思想实现增强型数组; queue 基本数据结构队列,先进先出; stack 基本数据结构——栈,先进后出; string 定义了对字符串操作的一些方法; priority_queue 队列的扩展——优先队列,存入的数据默认按照从大到小排序,还可自定义; deque 队列扩展——双端队列,双端队列中的元素既可以从队首进/出队,也可以从队尾进/出队,可支持像数组下标的方式随机访问; set 数组扩展——其内部元素默认按升序排列,且具有元素不可重复的性质; multiset set集合扩展——有序多重集合,和set不同的是其中元素可以重复; bitset 内部存储
    admin 今天
  • 《算法竞赛入门到进阶》第三章第一节 vector的使用
    其他

    《算法竞赛入门到进阶》第三章第一节 vector的使用

    第三章 STL和基本数据结构 3.1 容器 1.顺序式容器 2.关联式容器 3.1.1 vector 1.定义 vectora; 默认初始化,a为空 vectorb(A); 用A定义b vectora(n); a有n个值为0的元素 vectora(a,n); a个值为n的元素 vectora(10,"null"); 10个值为null的元素
    admin 今天
  • OpenCV3.4.2+VS2015安装配置详细过程
    其他

    OpenCV3.4.2+VS2015安装配置详细过程

    环境配置 本文是OpenCV3.4.2 在VS2015下的配置过程,用的是WIN10系统 基于opencv的配置有两种 一是静态的配置   二是用CMake的动态链接库配置   OpenCV3.4.2官方下载  8月29日已更新至3.4.2版本 VS2015自行下载 二1:opencv下载安装 进入OpenCV的官网,选择3.4.2的Sources版本进行下载, 二2:CMake下载安装 CMake-3.12.1官方下载 CMake的安装教程 得到如下文件,其中1(OpenCV_VS2013_x64)是另外创建的文件夹,用于存放CMake生成的目标解决方案 打开CMake,添加源码和目标文件夹路径 打开已安装好的CMake软件 (1)添加解压出的OpenCV-3.4.2文件夹绝对路径
    admin 今天
  • C++学习第六十四篇
    其他

    C++学习第六十四篇

    /* * 函数重载概述 * 作用:函数名可以相同,提高复用性 * 函数重载满足条件: * 1、同一作用域下(如都在全局作用域下) * 2、函数名称相同 * 3、函数参数类型不同或者个数不同或者顺序不同 * 注意事项:函数返回值不是函数重载的条件 */ #include using namespace std; //函数重载需要函数都在同一作用域下 void func() { cout << "func的调用" << endl; } void func(int a) { cout << "func(int a)的调用" << endl; } void func(int a, double b) { cout << "func(int a,double b)的调用" << endl; } void func(double b, int a) { cout << "func(double b,int a)的调用" << endl; } //返回值不可以作为函数重载的条件,以下是错误的 // int func(d
    admin 今天
  • CF1613C Poisoned Dagger
    其他

    CF1613C Poisoned Dagger

    原题链接 题意 t组测试数据 n代表n个时刻,k代表共需要几秒的攻击。 给一个数组a有n个元素代表会在这些时刻发动攻击,问每次攻击最少持续多少秒可以让攻击总时长达到k秒。 思路 二分答案,找一个最小值,使得攻击总时长刚好大于或等于m。 用min(a[i + 1] - a[i], x)可以很方便的实现差值和需要的加哪个,够不够加。 代码 #include #define int long long using namespace std; const int N = 150; int n, m; int a[N]; bool check(int x) { int sum = 0; for (int i = 1; i < n; i ++ ) { sum += min(x, a[i + 1] - a[i]); } sum += x;//还有最后一个没有
    admin 今天
  • 常用C/C++开源库
    其他

    常用C/C++开源库

    1. 框架 Apache C++ Standard Library : 是一系列算法,容器,迭代器和其他基本组件的集合ASL : Adobe源代码库提供了同行的评审和可移植的C++源代码库。Boost : 大量通用C++库的集合。BDE : 来自于彭博资讯实验室的开发环境。Cinder : 提供专业品质创造性编码的开源开发社区。Bxxomfort : 轻量级的,只包含头文件的库,将C++ 11的一些新特性移植到C++03中。Dlib : 使用契约式编程EASTL : EA-STL公共部分ffead-cpp : 企业应用程序开发框架Folly : 由Facebook开发和使用的开源C++库。JUCE : 包罗万象的C++类库,用于开发跨平台软件libphenom : 用于构建高性能和高度可扩展性系统的事件框架。LibSourcey : 用于实时的视频流和高性能网络应用程序的C++11 evented IOLoki : C++库的设计,包括常见的设计模式和习语的实现。MiLi : 只含头文件的小型C++库openFrameworks : 开发C+
    admin 今天
  • MFC中使用sqlite3操作数据库 创建、插入、查询、修改、删除数据
    其他

    MFC中使用sqlite3操作数据库 创建、插入、查询、修改、删除数据

    需要用到的文件有sqlite3.h 、sqlite3.dll、sqlite3.lib。获取方法可参考https://blog.csdn.net/qinbaby/article/details/83107345 。 将这三个文件拷贝到自己新建MFC项目目录下,在解决方案窗口下 添加现有项,选择sqlite3.h 、sqlite3.dll、sqlite3.lib这三个文件,添加到项目中。 然后在.cpp开头添加#include “sqlite3.h”   一些宏定义: #define SQL_CREATE_TABLE "Create table if not exists User_info(UserName char(20), Password char(20), Level char(5))" #define SQL_INSERT_DATA "Insert into User_in
    admin 今天