![](https://img-blog.csdnimg.cn/5f88e7d9519c495db7bd20e0c31ce188.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Cpp
文章平均质量分 58
Cpp 基础及高阶知识汇总
Harrytsz
这个作者很懒,什么都没留下…
展开
-
Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)
将要全屏的 Qt 子窗口调用 setWindowFlags(Qt::Window) 将其类型提升为顶级窗口模式,然后调用 showFullScreen() 函数将子窗口全屏显示。当然全屏后还要恢复正常,即调用 setWindowFlags(Qt::subwindow) 将子窗口设置为非顶级窗口,再调用 showNormal() 还原子窗口显示。在使用 QDialog 时,默认情况下只有 “这是什么” 和 “关闭” 按钮,但是我们习惯有最大化和最小化按钮。即得到屏幕分辨率,如 1024*768。原创 2022-09-18 18:40:41 · 6640 阅读 · 0 评论 -
C++ 类模板 “无法解析的外部符号”的解决方案
C++使用类模板时,按照通用的.h文件与.cpp文件分开方式会报“无法解析的外部符号”错误,其根本原因在于编译器针对类模板不支持分离编译(利用VC助手产生函数实现时,也会自动加到.h文件而非.cpp文件)。针对此问题,解决方案有:将函数申明和实现全部写在.h文件中;如果非要.h文件与.cpp文件分开,则可在使用类模板的文件中,同时包含类模板的.h文件和.cpp文件#include "MyClass.h"#include "MyClass.cpp"...原创 2022-03-11 11:58:30 · 4891 阅读 · 0 评论 -
C++虚函数的作用
定义一个函数为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。虚函数假设我们有下面的类层次:class A { public: virtual void foo() { cout<<"A::foo() is called"<<endl; } }; class B:public A { publi.原创 2021-12-20 21:26:33 · 2917 阅读 · 1 评论 -
LeetCode Weekly Contest 272
给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 。如果不存在满足要求的字符串,返回一个 空字符串 “” 。回文字符串 的定义为:如果一个字符串正着读和反着读一样,那么该字符串就是一个 回文字符串 。示例 1:输入:words = [“abc”,“car”,“ada”,“racecar”,“cool”]输出:“ada”解释:第一个回文字符串是 “ada” 。注意,“racecar” 也是回文字符串,但它不是第一个。示例 2:输入:words = [“notapalind原创 2021-12-19 22:41:55 · 295 阅读 · 0 评论 -
C++: int int& int * int** 的区别、联系和用途
1、intint 是 C++关键字,表示整型,其大小是 32 位有符号整型,表示的范围是 [-2,147,483,648 , 2,147,483,647];在声明和定义变量时使用,它表示的意思是所声明或所定义的变量为整型变量。如果 int 用作函数参数时,其传递方向为值传递,即只能将实参的值传递给形参,而不能将形参的值传递给实参。例如:通过这种方式去进行交换两个数是无法达到目的的。#include<iostream>using namespace std;void swap1(in原创 2021-08-11 16:33:26 · 2269 阅读 · 0 评论 -
Acwing Trie 树模板题
AcWing 835. Trie字符串统计维护一个字符串集合,支持两种操作:I x 向集合中插入一个字符串 x;Q x 询问一个字符串在集合中出现了多少次。共有 N 个操作,输入的字符串总长度不超过 10510^5105,字符串仅包含小写英文字母。输入格式第一行包含整数 N,表示操作数。接下来 N 行,每行包含一个操作指令,指令为 I x 或 Q x 中的一种。输出格式对于每个询问指令 Q x,都要输出一个整数作为结果,表示 x 在集合中出现的次数。每个结果占一行。数据范围1≤N原创 2021-08-11 15:37:56 · 140 阅读 · 0 评论 -
2021-08-11
剑指 Offer 53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。示例 1: 输入: nums = [5, 7, 7, 8, 8, 10], target = 8 输出: 2示例 2: 输入: nums = [5, 7, 7, 8, 8, 10], target = 6 输出: 0提示: 0<=nums.length<=1050 <= nums.length <= 10^50<=nums.length<=105.原创 2021-08-11 11:34:55 · 99 阅读 · 0 评论 -
LeetCode 967. 连续差相同的数字
返回所有长度为 n 且满足其每两个连续位上的数字之间的差的绝对值为 k 的 非负整数 。请注意,除了 数字 0 本身之外,答案中的每个数字都 不能 有前导零。例如,01 有一个前导零,所以是无效的;但 0 是有效的。你可以按 任何顺序 返回答案。示例 1: 输入:n = 3, k = 7 输出:[181,292,707,818,929] 解释:注意,070 不是一个有效的数字,因为它有前导零。示例 2: 输入:n = 2, k = 1 输出:[10,12,21,23,32,34,43原创 2021-08-11 11:15:51 · 148 阅读 · 0 评论 -
LeetCode 446. 等差数列划分 II - 子序列
LeetCode 446. 等差数列划分 II - 子序列给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目。如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该序列为等差序列。例如,[1, 3, 5, 7, 9]、[7, 7, 7, 7] 和 [3, -1, -5, -9] 都是等差序列。再例如,[1, 1, 2, 5, 7] 不是等差序列。数组中的子序列是从数组中删除一些元素(也可能不删除)得到的一个序列。例如,[2,5,10] 是 [1,2,1,2,4,1,5原创 2021-08-11 10:43:33 · 196 阅读 · 0 评论 -
Acwing 131.直方图中最大的矩形
直方图是由在公共基线处对齐的一系列矩形组成的多边形。矩形具有相等的宽度,但可以具有不同的高度。例如,图例左侧显示了由高度为 2,1,4,5,1,3,3 的矩形组成的直方图,矩形的宽度都为 1:通常,直方图用于表示离散分布,例如,文本中字符的频率。现在,请你计算在公共基线处对齐的直方图中最大矩形的面积。图例右图显示了所描绘直方图的最大对齐矩形。输入格式输入包含几个测试用例。每个测试用例占据一行,用以描述一个直方图,并以整数 n 开始,表示组成直方图的矩形数目。然后跟随 n 个整数 h1,…原创 2021-08-10 23:09:09 · 307 阅读 · 0 评论 -
【C++】 为什么C++空类占一个字节
00. 目录 00. 目录01. 测试程序和结果分析02. 单继承空白基类最优化问题03. 多继承空白基类最优化问题 01. 测试程序和结果分析 测试程序如下: #include <iostream>using namespace std;//声明一个空类class A{};int main(void){ //使用空类定义两个对象 A a1; A a2; cout << "sizeo.转载 2021-05-08 23:05:57 · 544 阅读 · 0 评论 -
JetBrains下载历史版本
https://www.jetbrains.com/clion/download/other.html在上方的链接中将clion改为idea,phpstrom、webstrom等等原创 2021-01-15 21:39:04 · 481 阅读 · 0 评论 -
自制 Cpp 测试框架(二)
实战项目中的脑补能力实现调试信息 LOG日志打印功能实现 EXPECT系列封装实现 COLOR系列封装使用 __attribute__ 完成函数注册完善功能:测试框架初养成实现调试信息 LOG日志打印功能从理解 LOG 日志功能需求开始预测处理命令-宏定义// 定义符号常量:#define PI 3.1415926#define MAX_N 10000// 定义傻瓜表达式#define MAX(a, b) (a) > (b) ? (a) : (b)#define S(原创 2021-01-04 20:34:21 · 315 阅读 · 1 评论 -
41. 缺失的第一个正数
41. 缺失的第一个正数给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。代码:class Solution {public: int firstMissingPositive(vector<int>& nums) {原创 2020-08-21 22:46:48 · 141 阅读 · 0 评论 -
239. 滑动窗口最大值
239. 滑动窗口最大值给定一个数组 numsnumsnums,有一个大小为 kkk 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 kkk 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6原创 2020-08-21 21:49:54 · 224 阅读 · 0 评论 -
40. 组合总和 II
40. 组合总和 II给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输原创 2020-08-21 00:00:35 · 192 阅读 · 0 评论 -
39. 组合总和
39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5], targe原创 2020-08-20 23:24:28 · 194 阅读 · 0 评论 -
237 删除链表中的节点
237. 删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释原创 2020-08-20 22:48:30 · 206 阅读 · 0 评论 -
二叉树的最近公共祖先
236. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1..原创 2020-08-20 22:39:05 · 182 阅读 · 0 评论 -
二叉搜索树的最近公共祖先
235. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q =原创 2020-08-20 22:17:09 · 248 阅读 · 0 评论 -
C++ STL priority_queue容器适配器详解
priority_queue 容器适配器模拟的也是队列这种存储结构,即使用此容器适配器存储元素只能“从一端进(称为队尾),从另一端出(称为队头)”,且每次只能访问 priority_queue 中位于队头的元素。但是,priority_queue 容器适配器中元素的存和取,遵循的并不是 “First in,First out”(先入先出)原则,而是“First in,Largest out”原则。直白的翻译,指的就是先进队列的元素并不一定先出队列,而是优先级最大的元素最先出队列。注意,“First i转载 2020-06-17 21:31:38 · 399 阅读 · 0 评论 -
C++ STL queue容器适配器详解
和 stack 栈容器适配器不同,queue 容器适配器有 2 个开口,其中一个开口专门用来输入数据,另一个专门用来输出数据,如图 1 所示。图 1 queue容器适配器这种存储结构最大的特点是,最先进入 queue 的元素,也可以最先从 queue 中出来,即用此容器适配器存储数据具有“先进先出(简称 “FIFO” )”的特点,因此 queue 又称为队列适配器。其实,STL queue 容器适配器模拟的就是队列这种存储结构,因此对于任何需要用队列进行处理的序列来说,使用 queue 容器适配器转载 2020-06-17 21:09:36 · 405 阅读 · 0 评论 -
C++ stack(STL stack)容器适配器用法详解
stack 栈适配器是一种单端开口的容器(如图 1 所示),实际上该容器模拟的就是栈存储结构,即无论是向里存数据还是从中取数据,都只能从这一个开口实现操作。图 1 stack 适配器示意图如图 1 所示,stack 适配器的开头端通常称为栈顶。由于数据的存和取只能从栈顶处进行操作,因此对于存取数据,stack 适配器有这样的特性,即每次只能访问适配器中位于最顶端的元素,也只有移除 stack 顶部的元素之后,才能访问位于栈中的元素。栈中存储的元素满足“后进先出(简称LIFO)”的准则,stack转载 2020-06-17 20:58:18 · 397 阅读 · 0 评论 -
什么是适配器,C++ STL容器适配器详解
在详解什么是容器适配器之前,初学者首先要理解适配器的含义。其实,容器适配器中的“适配器”,和生活中常见的电源适配器中“适配器”的含义非常接近。我们知道,无论是电脑、手机还是其它电器,充电时都无法直接使用 220V 的交流电,为了方便用户使用,各个电器厂商都会提供一个适用于自己产品的电源线,它可以将 220V 的交流电转换成适合电器使用的低压直流电。从用户的角度看,电源线扮演的角色就是将原本不适用的交流电变得适用,因此其又被称为电源适配器。再举一个例子,假设一个代码模块 A,它的构成如下所示:clas转载 2020-06-17 20:49:58 · 583 阅读 · 0 评论 -
LeetCode Week2 链表专题
LeetCode Week2 链表专题19. 删除链表的倒数第N个节点难度中等833给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?/*** Definition for singly-linked list.* struct L原创 2020-06-04 20:56:41 · 202 阅读 · 0 评论 -
LeetCode Week 1 二分法专题
LeetCode Week 1 二分法专题69. x 的平方根难度简单410实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。class Solution {public: int mySqrt(int x) {原创 2020-06-04 20:55:27 · 225 阅读 · 0 评论 -
Nginx源码分析(25篇)
Nginx源码分析 - 初探Nginx的架构 Nginx源码分析 - 基础数据结构篇 - 内存池 ngx_palloc.c Nginx源码分析 - 基础数据结构篇 - 数组结构 ngx_array.c Nginx源码分析 - 基础数据结构篇 - 缓冲区结构 ngx_buf.c Nginx源码分析 - 基础数据结构篇 - 双向链表结构 ngx_queue.c Nginx源码分析 - 基础数据结构篇 - 单向链表结构 ngx_list.c Nginx源码分析 - 基础数据结构篇 -...转载 2020-05-09 16:14:15 · 474 阅读 · 0 评论 -
C++ STL的各种实现版本介绍
ANSI/ISO的C++ STL规范版本正式通过以后,各个C++编译器厂商就可以依照标准所描述的原型去实现C++ STL泛型库,于是出现多种符合标准接口,但具体实现代码不同的泛型库,主要有:HP STLHP STL是Alexandar Stepanov在惠普Palo Alto实验室工作时,与Meng Lee合作完成的。HP STL是C++ STL的第一个实现版本,而且是开放源码。其它版...转载 2020-04-08 22:33:02 · 588 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静...转载 2020-03-04 14:41:16 · 193 阅读 · 0 评论 -
Acwing 刷题指南
Acwing 刷题指南1. 二分LeetCode 69. Sqrt(x)LeetCode 35. Search Insert PositionLeetCode 34. Find First and Last Position of Element in Sorted ArrayLeetCode 74. Search a 2D MatrixLeetCode 153. Find Mini...原创 2020-02-12 14:41:53 · 1674 阅读 · 0 评论 -
Cpp 基础知识
1.说一下 static 关键字的作用参考回答:全局静态变量 :在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。局...原创 2020-02-10 14:58:19 · 1620 阅读 · 0 评论 -
编程巨星的唯一秘诀
别以为是那些软件开发定律,别以为是开发出那些特殊用途的软件,别以为是软件设计技术本身。只有一条真理决定了一个软件程序员的成功还是失败。由于坚持这个真理,一个资深的程序员能在一天的时间里学会一门新的编程语言,而由于不坚持这条真理,一个初级的程序员用十年时间也只能挣到一份糊口的钱、永远是来实现别人的设计、永远不够优秀而得不到晋升的机会。这条真理让你看清了差的程序员和好的程序员的不同之处,好的程序员和伟...转载 2020-01-19 21:36:48 · 200 阅读 · 0 评论 -
C++ 之父 Bjarne Stroustrup : 简单的表述方式才是最优的方案
2016 年的最后一天,图灵访谈给各位小伙伴儿献上特大彩蛋!借用 Bjarne 大师的话“趁你还足够年轻的时候,喜欢上某些学科,选择具有挑战性和感兴趣的工作并养成良好的习惯!”,预祝你们在 2017 年找到新的方向!Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)1982 年,贝尔实验室(美国 AT&T 公司)的 Bjarne Stroustrup 博士在 C 语言的基础...原创 2020-01-19 21:28:54 · 875 阅读 · 0 评论 -
C++学习路径
精通没有标准,但学习有路径。 我来说说 学习掌握C++的路径吧,从低到高,分0~10级:0级:掌握常见C++语法和语言构造,能够顺溜地写清楚各种语言构造(很多小白鼠死在这里)1级:掌握基本的编程范式:面向过程、面向对象、泛型编程、以及C++11/14支持的函数式编程2级:清楚编译器在 后面干了什么(compiler under the hood-考验功力的时候到了)3级:清楚运行时内存模...原创 2020-01-19 11:05:10 · 447 阅读 · 0 评论 -
Win10 VS 安装 OpenCV 教程 (终结篇)
前言:刚开始是不打算写这篇博客的,但是我最近为了完成对老师布置的区域生长算法,强行要配置一波opencv,因为换了电脑,所以选择了有黑黑主题酷酷的VS2017,但无奈网上的博客关于vs2017配置Opencv不够全(vs2010配置opencv的倒是贼多!),我当时是看了将近10篇文章才配置成功,所以在此我来从一个新入坑的角度来说一下怎么完整的配置一个OPencv!下面就分步来进行说明吧!注意...原创 2020-01-02 15:50:39 · 981 阅读 · 0 评论 -
数据结构、算法与应用C++语言描述答案
Chapter 1练习1Exercise 1: 解释为什么程序 1-7 的交换函数没有把形参 x 和 y 所对应的实参的值交换。如何修改代码,使实参的值得到交换?void swap (int x, int y) { // 交换整数 x 和 y int temp = x; x = y; y = temp;}在调用 swap() 函数之前,系统会把实参复制给...原创 2020-01-01 18:31:24 · 2354 阅读 · 2 评论 -
no matching function for call to 'find(std::list<int>::iterator,std::list<int>::iterator, int&)'
no matching function for call to 'find(std::list::iterator,std::list::iterator, int&)'问题只需要添加上对算法库的头文件引用即可:#include ,再次编译就OK了!原创 2019-12-31 15:36:50 · 1385 阅读 · 0 评论 -
今天才发现printf不能直接输出string类型
今天才发现printf不能直接输出string类型近期研究设计模式,在程序输出时心血来潮用了c版本的printf,结果就蛋疼了,一直输出是乱码,string s = "中国";printf("%s" , s);//输出乱码果断切换成c++版本的cout发现可以正常输出。于是上网找答案,居然惊讶的发现printf输出字符串是针对char *的,换言之,printf只能输出C语言中的内置数据...转载 2019-12-30 22:47:24 · 257 阅读 · 0 评论 -
C++学习之路(15)---C++ 资源大全
C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些汇总列表。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器...转载 2019-10-05 19:52:03 · 329 阅读 · 0 评论