- 博客(183)
- 资源 (24)
- 收藏
- 关注
原创 stream buffer
#include <cstdio>#include <iosfwd>#include <iostream>#include <vector>#include <zconf.h>#include <zlib.h>#include <iomanip>#include <cassert>#include <atomic>#include <chrono>#include &.
2021-07-06 15:33:11 216
原创 2021-03-02
dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。在多态类型之间的转换主要使用dynamic_cast,因为类型提供了运行时信息。(1)下行转换,基类转换为子类,例如:智能指针转换类似于`shape*`转换为`circle*`使用dynamic_cast转换后,指针为空.此...
2021-06-25 16:00:44 171
原创 双指针实现
#include "stdio.h"void printAddHead(const char *head, char *str, int taglen) { int offset = taglen; char *b = str + offset; char *e = str + offset; while(*e != 0) { if(*e == '\n') { if(e != b) { *e = 0; .
2021-06-25 15:59:50 189
原创 服务器下载各种数据集
COCO2017http://www.functionweb.tk/?/coco2017/如果遭遇下载失败的情况请访问https://blog.csdn.net/weixin_43599336/article/details/87801040原始地址:http://images.cocodataset.org/zips/train2017.ziphttp://images.cocodataset.org/annotations/annotations_trainval2017.zipht
2021-04-13 15:45:14 1051
原创 搜索旋转排序数组
class Solution {public: int search(vector<int>& nums, int target) { int size=nums.size()-1; int left=0; int right=size; while(left<=right){ int mid=left+(right-left)/2; if(nums[mi...
2021-04-07 14:27:57 83
原创 子集问题
class Solution {public: vector<vector<int>> res; vector<int> temp; vector<vector<int>> subsets(vector<int>& nums) { backtrace(nums,0); return res; } void backtrace(vector&l...
2021-03-31 12:29:03 93
原创 841. 钥匙和房间
示例1就可以访问所有的房间,因为通过房间里的key将房间连在了一起。示例2中,就不能访问所有房间,从图中就可以看出,房间2是一个孤岛,我们从0出发,无论怎么遍历,都访问不到房间2。认清本质问题之后,就知道孤岛问题,使用 广度优先搜索(bfs) 还是 深度优先搜索(dfs) 都是可以的。代码如下:## BFS C++代码class Solution {bool bfs(const vector<vector<int>>& rooms) { v...
2021-03-28 19:54:00 120
原创 递增子序列
class Solution {public: vector<vector<int>> findSubsequences(vector<int>& nums) { set<vector<int>> st;//用 set 保存结果去重复 vector<int> cur;//当前子序列 dfs(st,cur,nums,0); vec...
2021-03-27 20:57:02 86
原创 结点删除三部曲
针对于结点删除,我先介绍剑指offer 18 删除链表的节点。题目:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.使用上面哑结点的技巧,结合模拟法的思考,很自然地得到下面的代码:/*** Definition for si...
2021-03-27 09:57:29 158
原创 647. 回文子串
647. 回文子串给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"提示:输入的字符串长度不会超过 1000 。 class Solution {public:
2021-03-25 15:34:47 86
原创 c++ 28
C++学习笔记1、为了减少时间开销,如果在类体中定义的成员函数中不包括循环等控制结构,C++系统会自动将它们作为内置(inline)函数来处理。2、在指定默认参数时,一般只需在函数声明时指定,函数定义时不必重复指定默认参数。如果函数定义时也指定了默认参数,其值应与函数声明时一致,如果不一致,编译系统以函数声明时指定的默认参数值为准,函数定义时指定的默认参数不起作用。3、在一个类中定义了全部是默认参数的构造函数后,不能再定义重载构造函数;但如果构造函数中的参数并非全部为默认值时,就要分析具体情况。
2021-03-23 22:51:51 365
原创 发散你的思维,别约束自己
287. 寻找重复数难度中等1132给定一个包含n + 1个整数的数组nums,其数字都在1到n之间(包括1和n),可知至少存在一个重复的整数。假设nums只有一个重复的整数,找出这个重复的数。示例 1:输入:nums = [1,3,4,2,2]输出:2示例 2:输入:nums = [3,1,3,4,2]输出:3示例 3:输入:nums = [1,1]输出:1法1:class Solution {publ...
2021-03-21 21:15:32 119
原创 跳一跳
Jump Game Ibool canJump(vector<int>& nums) { int n = nums.size(); int farthest = 0; for (int i = 0; i < n - 1; i++) { // 不断计算能跳到的最远距离 farthest = max(farthest, i + nums[i]); // 可能碰到了 0,卡住跳不动了 .
2021-03-15 11:13:58 87
原创 打家劫舍三部曲
1:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。class Solution {public: int rob(vector<int>& nums) { int n=nums.size(); i
2021-03-12 21:24:20 125
原创 方向总结
1.AI 模型过大,放在嵌入式终端或手机受限,压缩剪枝兴起过一段时间。2.手机端运行AI算法核心受限的还是计算力,算法变轻量级,兴起轻量级神经网络。3.图计算毫无章法可言,所以每一次探索就会有一个点。...
2021-03-11 13:02:40 91
原创 131. 分割回文串
131. 分割回文串难度中等592给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。回文串是正着读和反着读都一样的字符串。示例 1:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]示例 2:输入:s = "a"输出:[["a"]]class Solution {public: vector<vector<string>> res; ...
2021-03-07 19:51:37 86
原创 二维区域和检索 - 矩阵不可变
https://leetcode-cn.com/problems/range-sum-query-2d-immutable/solution/er-wei-qu-yu-he-jian-suo-ju-zhen-bu-ke-b-2z5n/class NumMatrix {private: vector<vector<int>> data;public: NumMatrix(vector<vector<int>>& matrix)
2021-03-03 09:35:46 80
原创 cast
dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。在多态类型之间的转换主要使用dynamic_cast,因为类型提供了运行时信息。(1)下行转换,基类转换为子类,例如:智能指针转换类似于`shape*`转换为`circle*`使用dynamic_cast转换后,指针为空.此时资源..
2021-03-02 09:56:17 80
原创 c++ 类
/** * @file abstract.cpp * @brief 抽象类中:在成员函数内可以调用纯虚函数,在构造函数/析构函数内部不能使用纯虚函数 * 如果一个类从抽象类派生而来,它必须实现了基类中的所有纯虚函数,才能成为非抽象类 */#include<iostream>using namespace std;class A {public: virtual void f() = 0; // 纯虚函数 void g(){ this->f(); }.
2021-03-01 10:41:07 114
原创 函数调用二进制码并执行
typedef int(*AddFunc)(int, int);int main(){ // int add(int a, int b)函数64位系统下二进制码 unsigned char add_binaryCode[] = { 0x55, 0x48, 0x89, 0xe5, 0x89, 0x7d, 0xfc, 0x89, 0x75, 0xf8, 0x8b, 0x55, 0xfc, 0x8b, 0x45, 0xf8, 0x01, 0xd0, 0x5d, .
2021-02-28 22:07:54 685
原创 原子操作
目录1.原子操作介绍2.示例比较:不用锁及原子(结果错误)3.示例比较:用锁(耗时)4.示例比较:原子(更加简便,省时)1.原子操作介绍所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。在以往的C++标准中并没有对原子操作进行规定,我们往
2021-02-26 09:47:26 155
原创 map vs unordered_map
内部实现机理map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行这样的操作,故红黑树的效率决定了map的效率。 unordered_map: unordered_map内部实现了一个哈希表,因此其元素的排列顺序是杂乱的,无序的优缺点以及适用处map 优点: 有序性,这是map结构最大的优点,其元素的有序性在很多应用中都会..
2021-02-25 10:02:13 129
转载 fork后的父子进程
一、fork后的父子进程由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的理由是:因为一个进程的子进程可以多于一个,没有一个函数使一个进程可以获得其所有子进程的进程id。对子进程来说,之所以fork返回0给它,是因为它随时可以调用getpid()来获取自己的pid;也可以调用getppid()来获取父进程的id。(进程id 0总是由交换进程使用,.
2021-02-24 13:51:56 1396
原创 # C++ 多线程编程资料汇 #
-C++11-thenewISOC++standard:[http://www.stroustrup.com/C++11FAQ.html](http://www.stroustrup.com/C++11FAQ.html)-[http://en.cppreference.com/w/cpp/thread/thread](http://en.cppreference.com/w/cpp/thread/thread)-[http://www.cplusplus.com/referenc...
2021-02-22 13:41:24 89
原创 c++右值引用
##1.核心语言的运行时性能强化#####1.1右值引用和move语义###>本小节主要参考了IBMdeveloperWorkds上的一篇博文:《C++11标准新特性:右值引用与转移语义》:[http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/](http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/),在...
2021-02-22 10:57:26 564
原创 使用友元的好处
使用友元的好处:实现了不同类的成员函数和普通函数或者不同类的成员函数之间的数据共享,可以避免频繁地调用累的接口函数,节省程序的运行开销。使用的友元的坏处:破坏了了数据隐藏的特性。使用友元需要在安全性和效率之间折衷选择。...
2021-02-16 17:49:24 655
原创 C++11中default关键字
C++11添加了很多新特性,使C++看上去更加的灵活和面向对象,其中新关键字default值得我们关注一下。 我们知道有时候当我们仅创建了有参构造函数后,如果你想调用无参构造函数编译是会报错的。因为一旦你自己定义了构造函数,系统的默认构造函数是被屏蔽的,也就是说此时是没有无参构造函数的,所以我们需要自己定义一个无参构造函数。但是现在在C++11中,如果我们仅定义了有参构造函数,可以通过default关键字让默认构造函数恢复。具体实现如下:<span style="color:#000000"
2021-02-07 13:21:09 1174 2
原创 C++11 最佳计时方法
计时有很多用途,比如:测试某一段代码的运行时间,时间越短,则性能相对越高。计时有很多方法,我将首先给出我以前常用的一种计时方法,然后给出我认为的最佳方法(采用了C++11的标准技术)。首先给出我以前常用的一种“传统”的计时方法:#include <ctime>using namespace std;clock_t start = clock();// do something...clock_t end = clock();cout << "花费了" <
2021-02-05 16:47:19 827
转载 编写高质量代码改善C++程序的150个建议
第一部分 语法篇第1章从C继承而来的建议0:不用让main函数返回void main函数的返回类型是int,不是void或其它类型。建议1:区分0的4种面孔(1)、整型0;(2)、空指针NULL,指针与int类型所占空间是一样的,都是32位;(3)、字符串结束标志’\0’;(4)、逻辑FALSE/false,FALSE/TRUE是int类型,而false/true是bool类型。建议2:避免那些由运算符引发的混乱 不要...
2021-02-05 16:27:11 1219
转载 git cherry-pick
概述git cherry-pick可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry-pick了。用法git cherry-pick [<options>] <commit-ish>...常用options: --quit 退出当前的chery
2021-01-24 20:29:01 212
原创 gtest
一、什仫是gtestgtest是一个跨平台的(Liunx、Mac OS X、Windows 、Cygwin 、Windows CE and Symbian ) C++单元测试框架,由google公司发布。gtest是为在不同平台上为编写C++测试而生成的。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。了解了什仫是gtest之后下面让我们来学习gtest的一些使用规则吧!一、gtest系列之TEST宏TEST(test_case_name, test_name)TEST_.
2021-01-18 20:56:49 308
原创 swich case字符串妙用
const char* str = "first";switch(str){case "first": cout << "1st one" << endl; break;case "second": cout << "2nd one" << endl; break;case "third": cout << "3rd one" << endl; break;default: cout << "Def.
2021-01-17 10:25:36 405
原创 类型强转
C++基类和派生类的智能指针转换:static_pointer_cast、dynamic_pointer_cast、const_pointer_cast、reinterpret_pointer_cast当我们用“裸”指针进行类层次上的上下行转换时,可以使用dynamic_cast。当然我们也可以使用static_cast,只是dynamic_cast在进行下行转换的时候(即基类到派生类)具有类型检查功能,而static_cast没有。因此存在安全问题。当我们使用智能指针时,如果需要进行类层次上的上下.
2021-01-17 10:20:57 442
原创 打印函数
1.int main(int argc, char* argv[]){char insertTime[20] = {"1234567890"};double insertTime1 = 12321;printf("|%-15s|/n",insertTime);//左对齐,15位长度,不够补空格printf("|%15s|/n",insertTime);//右对齐,15位长度,不够补空格printf("|%015s|/n",insertTime); //右对齐,15...
2021-01-08 20:52:28 265 2
原创 智能指针
智能指针、悬空指针智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用
2021-01-06 22:25:54 66
转载 通过Valgrind的Massif工具进行C++内存使用分析
关于Valgrind的简介可以参考:https://blog.csdn.net/fengbingchun/article/details/50196189Valgrind在Ubuntu上的安装可以参考:https://blog.csdn.net/fengbingchun/article/details/78164837可以使用Valgrind的memcheck工具来检查是否有内存泄漏,可以使用massif工具来对内存使用情况进行分析。这里简单介绍下massif工具的使用。Massif工具的官网介
2021-01-06 09:55:18 663
原创 wsl安装
WSL安装图形界面https://www.cnblogs.com/lzping/p/12401562.htmlhttps://blog.csdn.net/yq_forever/article/details/103632662Ubuntu 14.04 64位上安装Valgrind 3.13.0 操作步骤https://blog.csdn.net/fengbingchun/article/details/78164837?utm_medium=distribute.pc_relevant_do
2021-01-06 09:38:27 137
原创 如何有效减少全局变量的使用
使用全局变量的优点是:可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。但是,使用全局变量也有许多缺点:(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。(2)全局变量破坏了函数的封装性能。前面的章节曾经讲过,函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进
2021-01-05 21:51:57 2312
转载 zlib(非流压缩)
$wget http://www.zlib.net/zlib-1.2.3.tar.gz$tar -xvzf zlib-1.2.3.tar.gz$cd zlib-1.2.3.tar.gz$./configure$make$sudo make install安装好之后,就可以用了zlibmgr.h 文件#ifndef _ZLIBMGR#define _ZLIBMGR#define MAXBUFFERSIZE 200000#include <iostream>#in.
2021-01-04 16:20:42 409
taro适配harmony app codes,taro适配harmony app codes,taro适配harmony ap
2022-09-09
智东西公开课-嵌入式AI合辑第3讲课件-嵌入式AI应用开发对操作系统的要求与挑战-RT-Thread人工智能总监杨武.pdf
2020-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人