【Warrior刷题笔记】力扣169. 多数元素 【排序 || 哈希 || 随机算法 || 摩尔投票法】详细注释 不断优化 极致压榨
题目
来源:力扣(LeetCode)
链接:https: leetcode-cn.com/problem majority-element/
注意,该题在LC中被标注为easy,所以我们更多应该关注的是文章中不断优化的思路和方法。很多时候面试考察的,就是与面试官一起做题并把时间复杂度和空间复...[2022/1/17]
Qt 6.2.1 Components and Libs
Qt WebEngine :qt镶嵌html; Active Qt :也与网页有关; Qt 3D :qt的三维图形; Qt charts :qt的图表; Qt Connectivity :qt应用的蓝牙相关设置; Qt Data Visualization :qt的三维图形加强版; Qt Ima...[2022/1/17]
哈夫曼树(Huffman树)原理分析及实现
哈夫曼树(Huffman树)原理分析及实现
1 构造原理
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结...[2022/1/17]
c++的bind使用方法
c++的bind使用方法
除了容器有适配器之外,其实函数也提供了适配器,适配器的特点就是将一个类型改装成为拥有子集功能的新的类型。其中函数的适配器典型的就是通过std::bind来实现。
std::bind函数定义在头文件functional中,是一个函数模板,它就像一个函数适配器,接受一个可...[2022/1/17]
C/C++ Qt 运用JSON解析库 [解析篇]
JSON是一种简单的轻量级数据交换格式,Qt库为JSON的相关操作提供了完整的类支持,使用JSON解析文件之前需要先通过TextStream流将文件读入到字符串变量内,然后再通过QJsonDocument等库对该JSON格式进行解析,以提取出我们所需字段。
首先创建一个解析文件,命名为conf...[2022/1/17]
KCP协议学习
简介
KCP是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。 连时钟都需要外部...[2022/1/17]
C++高并发场景下读多写少的优化方案C++高并发场景下读多写少的优化方案
C++高并发场景下读多写少的优化方案
概述
一谈到高并发的优化方案,往往能想到模块水平拆分、数据库读写分离、分库分表,加缓存、加mq等,这些都是从系统架构上解决。单模块作为系统的组成单元,其性能好坏也能很大的影响整体性能,本文从单模块下读多写少的场景出发,探讨其解决方案,以其更好的实现高并发。 ...[2022/1/17]
《C++自学入门》3.基本数据类型-3
1.C++算术运算符
1.1 基本运算符
读者可能还对学校里的算术练习记忆犹新,在计算机上也能够获得同样的乐趣,C++使用运算符来运算。它提供了几种运算符来完成五种基本的算术运算:加法、减法、乘法、除法以及求模。每种运算符都使用两个值来计算结果。运算符及其...[2022/1/17]
c++的左值(lvalue),右值(rvalue),移动语义(move),完美转发(forward)c++的左值(lvalue),右值(rvalue),移动语义(move),完美转发(forward)
c++的左值(lvalue),右值(rvalue),移动语义(move),完美转发(forward)
c++的左值,右值 精辟总结
当一个对象被用作右值的时候,使用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)左值右值,完美转发参考文档。
左值持久,右值...[2022/1/17]
番外-->数据在计算机的存储
类型,不光出现在定义变量的时候,还有使用变量的时候。
类型决定了开辟空间的大小
存的角度,定义变量时使用何种类型就代表分配给变量多大的内存空间,这个变量最大能拥有多少空间。
如:int a就分配给了a变量4个字节的空间,char就是1个字节。
看待内存空间的方式
取的...[2022/1/17]
c++智能指针的使用,shared_ptr,unique_ptr,weak_ptr
c++智能指针的使用
官方参考
普通指针的烦恼:内存泄漏,多次释放,提前释放
智能指针 负责自动释放所指向的对象。
三种智能指针 shared_ptr,unique_ptr,weak_ptr;
将shared_ptr存放在一个容器中,不再需要它的时候,要erase掉。
allocato...[2022/1/17]
《C++自学入门》4.复合数据类型-1
假设宁开发了一个名叫“英雄联盟”的游戏,玩家需要控制角色最终打爆对面基地,从而取得胜利,这些角色支持普通攻击和技能攻击,每个角色还有对应的动作,或者特定的攻击力,血量等数据。宁很快就会发现,基本数据类型完全不能实现,C++提供了复合类型,这种类型时基于整型和浮点类型创建的。最为巧妙的复合数据类型...[2022/1/17]
【C++ Primer Plus】编程练习答案——第18章
1 chapter18.h
2
3 #ifndef LEARN_CPP_CHAPTER18_H
4 #define LEARN_CPP_CHAPTER18_H
5
6 #include <iostream>
7 #include <initializer...[2022/1/17]
select,poll,epoll的区别以及使用方法
I/O多路复用是指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。
原生socket客户端在与服务端建立连接时,即服务端调用accept方法时是阻塞的,同时服务端和客户端在收发数据(调用recv、send、sendall)时也是...[2022/1/17]
基于C++ OpenCV制作电子相册查看器
目录前言一、图片读取二、图片展示三、键盘控制四、效果显示五、源码总结 前言
本文将使用OpenCV C++ 制作电子相册查看器。类似于win10系统的“照片”功能。接下来就具体来看看是如何一步步的实现吧。
一、图片读取
我们想要一张张的查看文件夹下的图片,第一步就...[2022/1/17]
C++ OpenCV实现抖音"蓝线挑战"特效
目录前言一、图像扫描二、生成定格图像三、图像混合四、效果显示五、源码总结 前言
本文将使用OpenCV C++ 实现抖音上的特效“蓝线挑战”。虽然看起来觉得很牛的样子,但如果了解其中的原理就非常简单了。本案例是我自己对于这个特效实现过程的理解,仅供参考。
算法原理可以...[2022/1/17]
C++中友元函数(friend)解析C++中友元函数(friend)解析
文章转自公众号:Coder梁(ID:Coder_LT)
我们知道C++控制对象的私有部分的访问,只能通过公共的接口。这样的设计当然没错,但有的时候也会显得过于严格,产生一些问题。
因此C++提供了另外一种形式的访问权限,叫做友元(friend)。
友元有三种,分别是友元函数...[2022/1/3]
C++构造函数一些常见的坑
文章转自微信 公众号:Coder梁(ID:Coder_LT)
某一天我们接到了一个需求,需要开发一个类似于STL中string的类。
我们很快写好了代码:
#include <iostream>
#ifndef STRINGBAD_H_
#define STRINGBA...[2022/1/3]
C++类常量和类枚举
目录1.类常量2.类枚举 文章转自公众号:Coder梁(ID:Coder_LT)
1.类常量
有的时候, 我们希望能给类当中定义一些常量,可以给所有类的对象使用。
比如说我们在类当中定义一个数组,希望可以定义一个常量,用来初始化数组的长度。既然是用来初始化数组长度的,那么这个值自然也不...[2022/1/3]
C++抽象数据类型介绍
公众号:Coder梁(ID:Coder_LT)
我们在学数据结构的时候,经常遇到的一个概念就是抽象数据类型(Abstract Data Type),简称ADT。
维基百科中的定义是:抽象数据类型是计算机科学中具有类似行为的特定类别的数据结构的数学模型,或者具有类似语义的一种或多种程序设计语...[2022/1/3]
C++运算符重载详情介绍C++运算符重载详情介绍
文章转自公众号:Coder梁(ID:Coder_LT)
C++当中除了函数可以重载之外,其实运算符也是可以重载的。我们之前已经接触过一些,可能大家没有意识到。
举个例子,乘号*,运用在指针上,就是取值的意思,而运用在算数当中,则是乘法的意思。同样一个符号,用在不同的地方,起到了不同的效果。...[2022/1/3]
C++运算符重载限制介绍
目录一、重载限制1.必须至少有一个操作数是用户定义的类型2.不能违反运算符原来的规则3.不能创建新运算符4.禁止名单5.部分运算符只能通过成员函数重载 文章转自公众号:Coder梁(ID:Coder_LT)
一、重载限制
上一篇我们讲了在类和结构体当中重载运算符,关于运算符的重载...[2022/1/3]
C++实现简易选课系统代码分享
下面是详细代码分享:
#include<bit tdc++.h>
using namespace std;
声明函数部分:
声明函数部分
void BuildMainMenu(); 声明主菜单函数
void SelectSytem(int AID,int who);...[2022/1/3]
C++this指针详情
还是Stock股票这个类,假设我们要实现一个方法,比较一下当前股票和传入的股票, 返回价格高的那个股票。在我们实现的时候,会遇到一点问题。
const Stock & Stock::topVal(const Stock &s) const {
? ? if (s.total_...[2022/1/3]
C++实现转置矩阵的循环
目录前言一、思路分析二、代码实现1.转置矩阵函数2.调用函数实现转置矩阵总结 前言
矩阵的转置主要考查我们对循环的使用,通过简单的循环结构,我们可以很方便的完成矩阵的转置。
一、思路分析
转置矩阵与原矩阵的区别在于行列交换,我们可以构建一个二维数组完成对原矩阵的存储,我们只需将每个...[2022/1/2]
C++对象与继承使用中一些问题介绍
目录定义抽象类类的继承使用new关键字实例化对象,只能用指针变量来接收使用普通的对象属性及方法时使用.来引用,但是用指针表示的对象则使用->定义类的时候,属性需要赋初始值的请况类的前置声明命名空间的使用总结 定义抽象类
cla Person {
public:
virtual vo...[2022/1/2]
C++名称空间特性
目录一、名称空间特性1.嵌套2.传递3.别名4.匿名名称空间 文章转自微信公众号:Coder梁(ID:Coder_LT)
一、名称空间特性
1.嵌套
我们可以将名称空间声明进行嵌套:
namespace elements {
? ? namespace fire {
? ? ? ...[2022/1/2]
C++类的定义与实现
目录一、类的定义二、类的实现1.成员函数2.内联函数 文章转自 微信公众号:Coder梁(ID:Coder_LT)
一、类的定义
根据C++ Primer中的描述,类的定义是一种将抽象转换为用户定义类型的C++工具。也就是说类的实质是一种用户自定义类型,它可以将数目表示和操作数据的方法组合成...[2022/1/2]
C++构造函数详解
文章转自公众号:Coder梁(ID:Coder_LT)
上一篇文章我们介绍了定义了类,在使用之前,往往还需要对类进行初始化。这篇介绍的就是对类进行初始化的方法。
像是结构体,我们可以使用列表初始化的方法进行初始化:
struct Thing {
? ? char *pn;
? ? ...[2022/1/2]
C++计算圆形、矩形和三角形的面积C++计算圆形、矩形和三角形的面积
题目描述
运用多态编写程序,声明抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea()分别输出以上三者的面积(结果保留两位小数),3个图形的数据在定义对象时给定。
输入
圆的半径 矩形的边长...[2022/1/2]
C++using声明和using编译指令
目录1.using声明2.using编译指令 1.using声明
C++当中提供了两种机制(using声明和using编译指令)来简化对名称空间中名称的使用。using声明使特定的标识符keys,using编译指令使整个名称空间可用。
using声明由关键字using和被限定的名称组成:
...[2021/12/31]
C++名称空间介绍
目录1.名称空间
1.1传统C++名称空间
1.2新的名称空间特性
1.名称空间
在C++当中,名称可以是变量、函数、结构体、枚举、类以及结构体和类的成员。这本身并没有问题,但随着项目的增大,名称之间相互冲突的可能性也会大大增加。
比如我们使用了多个厂商的代码,它们都定义了List,T...[2021/12/31]
C++递归实现选择排序算法
目录基本思想举例完整代码 基本思想
每次找出最小元素,通过交换实现将其放在乱序的首位,直到所有元素都已经排好序。
举例
以 A[10] = { 3,1,6,4,8,2,10,7,9,5 } 为例
第一次选择排序:排位置0,元素1是位置0以后的最小元素,那么swap(A[0], A[1...[2021/12/31]
C++存储方案和动态分配
目录存储方案和动态分配
初始化
存储方案和动态分配
在之前的文章当中,我们讨论了C++用来为变量分配内存的5种方案,但是这些方案并不适用于使用new运算符分配的内存,这种内存被称为动态内存。
我们在之前的文章当中也曾介绍过,动态内存由new和delete控制,而不是由作用域和链接性规则...[2021/12/31]
C++ NFS挂载
挂载NFS
挂载命令
挂载NFS时,常用的命令比如:
#将远程目录挂载到本地/home hare目录下
mount -t nfs -o nolock 192.168.1.10:/tmp /home hare
在Linux 下可以用mount函数进行挂载:
bool Mount()
{
...[2021/12/31]
Protobuf 动态加载 .proto 文件并操作 MessageProtobuf 动态加载 .proto 文件并操作 Message
Google Protocol Buffer 的常规用法需要使用 protoc 将 .proto 编译成 .pb.h 和 .pb.cc,这样做效率非常高,但是耦合性也很高。在某些追求通用性而不追求性能的场景下,需要使用 .proto 直接操作 protobuf 数据。
本例使用的 .proto...[2021/12/31]
c++读取文件操作和写入文件
在C++中与读取文件和写入文件简单操作有关的类分别有ifstream(文件读入)、ofstream(文件写出)、fstream (文件读入和写出)。
名称
作用
ifstream
文件读入
ofstream
文件写出
fstream
文件读入和写出
对于文件操作操作...[2021/12/31]
力扣刷题笔记 (1) - HM-7力扣刷题笔记 (1) - HM-7
2021-12-30
LeetCode T846
希望自己可以坚持写博客的习惯??
题目描述:
Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是 groupSize ,并且由 groupSize 张连续的牌组成。
给你一个整数数组 han...[2021/12/31]
freeswitch APR-UTIL库线程池实现分析
概述
freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。
APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来的跨平台可移植库,不同点在于库中实现的功能...[2021/12/31]
c++模板类的使用,编译的问题c++模板类的使用,编译的问题
1,模板类编译的问题
前两天在写代码时,把模板类的声明和分开放在两个文件中了,类似于下面这样:
stack.hpp:
#ifndef _STACK_HPP
#define _STACK_HPP
template <typename Type>
cla stack {
...[2021/12/24]
C++ 未初始化内存出现 flashback
在 C++ 中分配一个未初始化内存,然后读取它,会读取到这块内存之前被使用所留下的值,这种现象我称之为 flashback。
栈内存很容易出现这种现象,而且很容易观测出某种规律。
for (int i = 0; i < 10; ++i) {
int a;
std::c...[2021/12/24]
Qt-Vnc远程
VNC简介
VNC(Virtual Network Computing)是基于RFB(Remote Frame Buffer)协议的远程系统,C/S端口默认为5900,B/S端口默认为5800。
RFB (远程帧缓存) 是一个远程图形用户的简单协议,工作在帧缓存级别上,其传输的是像素数据是以X...[2021/12/24]
C++访问者模式模板函数无法重载的问题解决
目录背景
解决方案
最终代码
背景
最近遇到一个比较棘手的场景,我们有一堆模块,他们有一个通用的基类,我们不防假设为 BaseCla ,该类有一些通用的结构以及需要重载的方法。这些模块有一个堆同名但是不同类型
参数的方法,比如:
int DerivedCla 1::Do...[2021/12/24]
C++泛型编程Generic?Programming的使用
目录一、容器
array
vector
deque
list
map 键值对key/value
二、迭代器iterator(泛型指针)
三、泛型算法Generic Programming
insert()插入erase()删除find()用于无序搜索,搜素范围[first, last), 返回ite...[2021/12/20]
C++ 之 常量成员函数
1 const 后缀
成员函数,在参数列表之后加 const,可声明为 常量成员函数,即该函数对于成员变量,只可读不可写
例如,Date 类中的三个常量成员函数:Ge...[2021/12/20]
基于Opencv图像识别实现答题卡识别示例详解
目录1. 项目分析2.项目实验3.项目结果总结 在观看唐宇迪老师图像处理的课程中,其中有一个答题卡识别的小项目,在此结合自己理解做一个简单的总结。
1. 项目分析
首先在拿到项目时候,分析项目目的是什么,要达到什么样的目标,有哪些需要注意的事项,同时构思实验的大体流程。
图1. 答...[2021/12/20]
《C++自学入门》3.基本数据类型-2《C++自学入门》3.基本数据类型-2
1.const限定符
1.1 const关键字
现在回过头来介绍常量的符号名称。符号名称指出了常量表示的内容。另外,如果程序在多个地方使用同一个常量,则需要修改该常量时,只徐修改一个符号定义即可。本章前面关于#defi...[2021/12/17]
C++模板重载
目录1.重载模板
2.问题
?文章转自 公众号:Coder梁(ID:Coder_LT)
1.重载模板
函数模板可以使得同一个函数对不同类型使用,非常地方便。但有的时候类型不同,只是通过模板是没办法解决的, 可能逻辑上也会有所区别,这个时候只是使用模板是无法解决的。
为了满足这种需求...[2021/12/17]
人脸识别实战之Opencv+SVM实现人脸识别人脸识别实战之Opencv+SVM实现人脸识别
目录前言项目结构编码训练人脸识别模型识别图像中的人脸摄像头识别人脸 前言
在本文中,您将学习如何使用 OpenCV 进行人脸识别。文章分三部分介绍:
第一,将首先执行人脸检测,使用深度学习从每个人脸中提取人脸量化为128位的向量。
第二, 在嵌入基础上使用支持向量机(SVM)训练人脸识别...[2021/12/17]
C++模板显式具体化
目录1.模板显式具体化2.实例化和具体化 1.模板显式具体化
前文当中说了,模板函数虽然非常好用,但是也存在一些问题。比如有的操作并不是对所有类型都适用的,针对这种情况C++提供了一个解决方案,就是针对特定类型提供具体化的模板定义。这里的具体可以理解成类型的具体。
我们来看一个C++ Pri...[2021/12/17]