自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书山有路勤为径

学习不止

  • 博客(134)
  • 收藏
  • 关注

转载 浅谈map与unordered_map的区别

转自:https://www.cnblogs.com/LDTSB-0101001/p/9749137.htmlmap类:  map是一种容器,内部元素由键值对组成,键与值的数据类型可以不同,键的值是唯一的(此处的值不是键值对中的值),用于自动排序数据值,排序方式是根据某种明确、严格的弱排序标准进行的,这种排序标准是由map内部的比较对象(即map::key_comp)指定的。使用时要引入#include <map>。  在键——值这个映射关系中,元素数据值是可以更改的,但键值是常量,

2020-07-25 10:53:23 480

原创 C++设计模式之策略模式

应用场景:定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影响到用户。适用性:适合类中的成员以方法为主,算法经常变动。缺陷:客户端要做出判断。策略模式和简单工厂基本相同,但简单工厂模式只能解决对象创建问题,对于经常变动的算法应使用策略模式。//策略基类class COperation {public: int m_nFirst; int m_nSecond; virtual double GetResult() { double dResult = 0; re

2020-07-21 19:52:31 276

原创 C++设计模式之工厂模式

简单工厂模式应用场景:主要用于创建对象。新添加类时,不会影响以前的代码。核心思想:用一个工厂来根据输入的条件产生不同的类,然后根据不同类的 virtual 函数得到不同的结果。适用性:不同情况创建不同的类。缺陷:客户端必须要知道基类和工厂类,耦合性差。工厂类与运算基类为关联关系。//基类class COperation {public: int m_nFirst; int m_nSecond; virtual double GetResult() { double dResult

2020-07-20 09:59:48 237

原创 FFmpeg4.2源码之AVFrame、AVPacket

FFmpeg中与音视频数据联系非常深的两个数据结构是AVFrame和AVPacket。阅读它们的源码很重要。AVFrame位于libavutil/frame.h。describes decoded (raw) audio or video data. must be allocated using av_frame_alloc(). 注意这只是分配了AVFrame本身,其中的数据buffer由其他方式管理。 AVFrame必须由av_frame_free()来释放。 AVFrame一次分配可以

2020-06-08 23:59:46 1110

转载 C语言多线程编程

https://www.cnblogs.com/zzdbullet/p/9526130.html介绍:什么是线程,线程的优点是什么线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。 一

2020-05-16 17:49:29 5172 2

原创 C语言字节对齐的一些知识点

https://blog.csdn.net/cclethe/article/details/79659590不同系统下数据类型长度不一样Data Type ILP32(32位linux) ILP64 LP64(64位linux) LLP64(64位windows) char 8 8 8 8 short 16 16 16 16 int 32 64 32 32 long 32 64

2020-05-16 15:54:57 234

原创 H264中的一些概念-NALU

一、H.264分层结构视频是由视频序列组成的,而视频序列又由一帧帧图像组成,图像又由片组成,片由宏块组成,宏块由子宏块组成。这种分层结构有助于更高效的节省码流。缺点也很大:1)每层中,头部和数据强依赖,头部丢失数据就无法解码;2)序列层和图像层数据量大,不能一次传输,若头部所在分组丢失,其他数据无法解码;3)图像层各片之间常携带相同数据,造成码流浪费。因此,H.264取消了图像层和序列层,取而代之的是图像参数集(PPS)和序列参数集(SPS),其余部分放入片层。序列参数集和图像参数集

2020-05-15 14:42:57 1002

原创 力扣-腾讯精选练习50题C++-217存在重复元素

题目描述给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。1.哈希,判断key值是否大于1class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_map <int,int>mp; for(int i:nums) ...

2020-05-09 00:24:24 204

原创 力扣-腾讯精选练习50题C++-206反转链表

题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。方法一:迭代在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用!/** * Definition for sin

2020-05-09 00:13:45 186

原创 力扣-腾讯精选练习50题C++-169多数元素

题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。方法一:哈希表我们知道出现次数最多的元素大于[n/2]次,所以可以用哈希表来快速统计每个元素出现的次数。我们使用哈希映射(HashMap)来存储每个元素以及出现的次数。对于哈希映射中的每个键值对,键表示一个元素,值...

2020-05-05 18:12:45 310

原创 力扣-腾讯精选练习50题C++-160相交链表

题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。分析截去较长链表前面多的部分,然后往后依次比较两个等长链表的元素。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...

2020-05-05 18:00:57 178

原创 力扣-腾讯精选练习50题C++-155最小栈

最小栈设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...

2020-05-05 17:52:57 234

原创 力扣-腾讯精选练习50题C++-141环形链表

给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。/** * Definition for singly-linke...

2020-05-05 16:59:32 170

原创 力扣-腾讯精选练习50题C++-136只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 41. 暴力时间复杂度O(n^2) 空间复杂度O(n) 。2. 快速排序class Solution {public: int singleNumber(ve...

2020-05-05 16:46:22 179

原创 力扣-腾讯精选练习50题C++-122买卖股票的最佳时机 II

题目描述给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1: 输入: [7,1,5,3,6,4],输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...

2020-05-05 11:30:03 131

原创 力扣-腾讯精选练习50题C++-21合并两个有序链表

题目描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * struct ListNode { * i...

2020-05-05 11:04:41 262 1

原创 力扣-腾讯精选练习50题C++-53最大子序和

题目描述:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。分析:动态规划。dp[i]表示以第 i 个元素结尾的连续子数组的最大和。class Solution {public: ...

2020-05-03 16:55:21 223

原创 LeetCode-C++-两数之和、

1. 两数之和给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, ...

2020-04-16 00:33:20 129

原创 C/C++开发学习的路线-书籍

《C Primer Plus》《C和指针》《C专家编程》1、《Essential C++》2、《C++ Primer》3、《Effective C++》4、《MoreEffective C++》5、《C++标准程序库》6、《深度探索C++对象模型》...

2020-04-16 00:15:47 160

原创 【转】Android音频编解码和混音实现

https://my.oschina.net/daxia/blog/636074

2020-04-13 20:55:17 232

原创 【转】音视频/多媒体开发 —— Jhuster

https://blog.51cto.com/ticktick/category15.html从开发小白到音视频专家Android 音视频开发入门指南Android音频开发基础知识如何采集一帧音频如何播放一帧音频如何存储和解析wav文件音频数据的编解码使用 OpenSL ES API如何设计一款优秀的短视频 SDK音视频开发:码率、延时、花屏...

2020-04-13 20:48:51 331

原创 【转】Android MultiMedia —— Hi,出发了

随笔分类 - Android MultiMediahttps://www.cnblogs.com/roger-yu/category/859661.htmlAndroid多媒体--MediaCodec 中文API文档Android MediaCodec的数据处理方式分析Android MediaCodec 状态(States)转换分析Android MediaPla...

2020-04-13 20:34:00 121

转载 Linux C++实现多线程同步的四种方式

https://www.bilibili.com/read/cv4323139背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题? 通过多线程模拟多窗口售票为例:#include <iostream>#include<pthread.h>#include<stdio.h>#include<stdlib.h>#include...

2020-04-12 00:25:49 969

原创 剑指offer—二叉树中和为某一值的路径

一:题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二:解题思路如下图所示的例子,给定了二叉树与整数22,则可以打印两条路径。第一条10,5,7、第二条10,12题目中定义路径:从树的根节点开始一直到叶子结点所经过的结点形成一条路径也就是说每条满足条件的路径都是以根节点开始,叶子...

2020-04-09 22:20:32 71

转载 快速排序原理及C++实现

https://blog.csdn.net/nrsc272420199/article/details/82587933原理:  快速排序,说白了就是给基准数据找其正确索引位置的过程.  如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾. ...

2020-04-09 19:39:15 289

转载 TCP/IP网络编程之基于TCP的服务端/客户端(二)

https://www.cnblogs.com/beiluowuzheng/p/9656284.html回声客户端问题上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服务端的I/O代码echo_server.c 1 2 3 ...

2020-04-09 16:51:24 231

转载 TCP/IP网络编程之基于TCP的服务端/客户端(一)

https://www.cnblogs.com/beiluowuzheng/p/9655100.html理解TCP和UDP根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字。因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字。TCP是Transmission Control Protocol(传输控制协议)的简写,意为“对数据传输过程的控制”...

2020-04-09 16:32:59 854

转载 TCP/IP网络编程之地址族与数据序列

https://www.cnblogs.com/beiluowuzheng/p/9613293.html分配IP地址和端口号IP是Internet Protocol(网络协议)的简写,是为收发网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的序号网络地址(Internet Address)为使计算机连接到网络并收发数据,必须向其分配I...

2020-04-09 16:00:48 511

转载 TCP/IP网络编程之套接字类型与协议设置

https://www.cnblogs.com/beiluowuzheng/p/9612910.html套接字与协议如果相隔很远的两人要进行通话,必须先决定对话方式。如果一方使用电话,另一方也必须使用电话,而不是书信。可以说,电话就是两人对话的协议。协议是对话中使用的通信规则,扩展到计算机领域可整理为“计算机间对话必备通信规则”在TCP/IP网络编程之网络编程和套接字这一章中,我们已经...

2020-04-09 15:03:45 215

转载 TCP/IP网络编程之网络编程和套接字

https://www.cnblogs.com/beiluowuzheng/p/9609245.html网络编程和套接字网络编程又称为套接字编程,就是编写一段程序,使得两台连网的计算机彼此之间可以交换数据。那么,这两台计算机用什么传输数据呢?首先,需要物理连接,将一台台独立的计算机通过物理线路连接在一起,形成一个网络,使得数据可以通过物理介质进行传输,这一点我们不用过多去关注。我们只需要考...

2020-04-09 14:39:04 257

原创 音频编解码基础知识(一)

音频编解码常用的三种实现方案1)采用专用的音频芯片对语音信号进行采集和处理,音频编解码算法集成在硬件内部,如MP3编解码芯片、语音合成分析芯片等。使用这种方案的优点就是处理速度块,设计周期短;缺点是局限性比较大,不灵活,难以进行系统升级。2)是利用A/D采集卡加上计算机组成硬件平台,音频编解码算法由计算机上的软件来实现。使用这种方案的优点是价格便宜,开发灵活并且利于系统的升级;缺点...

2020-04-08 18:57:07 3199

原创 剑指offer—二叉树的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路有右子树,下一结点是右子树中的最左结点; 无右子树,且结点是该结点父结点的左子树,则下一结点是该结点的父结点; 无右子树,且结点是该结点父结点的右子树,则我们一直沿着父结点追朔,直到找到某个结点是其父结点的左子树,如果存在这样的结点,那么...

2020-04-07 21:16:35 135 1

原创 剑指offer—对称的二叉树

题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), le...

2020-04-07 21:04:57 98

原创 剑指offer—按之字形顺序打印二叉树

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路实际上是二叉树的层次遍历,只不过每一行输出的方向都是相反的,每遍历二叉树的结点时,都将其内的每一个结点的左右孩子都保存好,设置一个标志,ture时就正序输出,false就逆序输出val,直到所有的结点都打印完即可。class ...

2020-04-07 20:21:39 202

原创 剑指offer—把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路使用队列和两个变量作为辅助,利用队列的先进先出策略,按层遍历二叉树。队列保存将要打印的节点,一个变量表示当前层中还没有打印的节点数,一个节点表示下一层节点的数目。/*struct TreeNode { int val; struct TreeNode *left; struct ...

2020-04-07 20:01:08 116

原创 剑指offer—二叉搜索树的后续遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路二叉搜索树,左子树节点都小于根节点,右子树节点都大于根节点。后续遍历序列,最后的元素是根节点,然后从前遍历找到第一个不小于根节点的元素,即可将左右子树分开。然后递归。class Solution {public: ...

2020-04-06 18:46:12 84

原创 剑指offer—二叉搜索树的第k个节点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路采用递归的方式,不断递归深入根节点的左孩子,直到碰到空节点为止,然后回溯输出当前节点。再以同样的方式递归遍历其右孩子。在此期间,每访问一个节点,我们都对k进行减一操作,直到k为0,说明该节点即为第k个节点。class Solution ...

2020-04-06 18:00:36 126

原创 交换元素,不用辅助内存

a = a + b; b = a - b; a = a - b;a1 = a + b; b1 = a1 - b = a; a1 = a1 - b1 = b;a = a * b; b = a / b; a = a / b;a1 = a * b; b1 = a1 / b = a; a1 = a1 / b1 = b;a = a ^ b; b = a ^ b;a = a ^...

2020-04-06 15:38:00 118

原创 堆排序(大顶堆、小顶堆)

https://www.cnblogs.com/lanhaicode/p/10546257.html大顶堆:每个结点的值都大于或等于其左右孩子结点的值小顶堆:每个结点的值都小于或等于其左右孩子结点的值...

2020-04-06 14:50:06 712

原创 make_heap(), pop_heap(), push_heap()

make_heap()是生成一个堆,大顶堆或小顶堆make_heap(_RAIter,_RAIter) 默认生成大顶堆 make_heap(_RAIter,_RAIter,_Compare) _Compare有两种参数,一种是greater(生成小顶堆),一种是less(生成大顶堆)push_heap()是向堆中插入一个元素,并且使堆的规则依然成立push_heap(_RAIter,_...

2020-04-06 00:39:56 201

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除