c++primer类详解
目录1. 定义抽象数据类型1.1 设计Sales_data类1.2 定义类相关的非成员函数1.3构造函数1.4 拷贝、赋值和析构2 访问控制和封装2.1 友元2.2 类的其他特性2.2.1 类成员再探2.2.2 返回*this的成员函数2.2.3 类类型2.2.4 友元再探2.4 类的作用域2.4....[2021/9/27]
C/C++程序设计的基本概念详解
目录概述main()函数内部名称变量和它的初始化编译时和运行时总结 概述
学C语言有很长一段时间了,想做做笔记,把C和C++相关的比较容易忽视的地方记下来,也希望可以给需要的同学一些帮助。
我的这些文章不想对C和C++的语法进行讲解和罗列,这些东西随便找一本书就讲的比我清楚,我只是想把一...[2021/9/27]
带你了解C++的IO流
目录一、C语言的输入与输出二、C++中流的概念三、C++IO流1.C++标准IO流2. C++文件IO流 四、stringstream总结 一、C语言的输入与输出
C语言中我们最长用到的输入输出方式就是scanf ()与printf()。
scanf(): 从标准输入设备(键盘)读...[2021/9/27]
C++ 实现旋转蛇错觉的详细代码
参考 《C和C++游戏趣味编程》 童晶
“旋转蛇”错觉
绘制错觉图片,使静止的圆盘看起来有在转动的错觉
绘制扇形
函数solidpie(left, top, right, bottom, stangle, endangle)可以绘制无边框的填充扇形。其中(left, top)、(rig...[2021/9/27]
C/C++实操True and false详解
在C11标准文档中,规定了关系运算符 <、> 、<= 、>=的运算结果,真时返回1,假时返回0,返回类型为整型。
运算符==、!=和关系运算符类似,除了运算优先级较低以外,也是返回1或0。
真(True)的定义是非0,所以假(False)的定义就是整型的0值。
...[2021/9/27]
C++输入流和输出流 超级详细
目录1、简单介绍2、C++输入流和输出流
1、简单介绍
C++ 又可以称为“带类的 C”,即可以理解为 C++ 是 C 语言的基础上增加了面向对象(类和对象)。在此基础上,学过 C 语言的读者应该知道,它有一整套完成数据读写(I/O)的解决方案:
使用 scanf() 、gets() ...[2021/9/27]
解决 VSCode 编写 C++11 代码报红问题分析
问题描述
今天在写 C++ 代码的时候用上 C++11 的特性,然后发现 VSCode 虽然可以编译通过,但是会在相应位置报红,如下图所示。
并且在编译的时候遇到如下警告:
C1.cpp:62:14: warning: ''auto'' type specifier is a ...[2021/9/27]
C/C++中CJSON的使用(创建与解析JSON数据)
目录一、cJSON介绍二、JSON简介、语法介绍2.1 JSON是什么?2.2 JSON语法介绍三、cJSON创建简单JSON数据并解析3.1 新建工程3.2 创建JSON数据3.3 解析JSON数据四、cJSON创建嵌套的对象数据4.1 创建json数据4.2 解析JSON数据五、cJSO...[2021/9/22]
详解C++中typedef 和 #define 的区别
1、执行上不同
关键字 typedef 在编译阶段有效,由于是在编译阶段,因此 typedef 有类型检查的功能。
#define 则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。
例如:typedef 会做相应的类型检查
ty...[2021/9/6]
C++哈希应用的位图和布隆过滤器
目录C++哈希应用的位图和布隆过滤器
一、位图1.位图的概念2.位图的面试题3.位图的实现4.位图的应用二、布隆过滤器1.布隆过滤器的提出2.布隆过滤器的概念3.布隆过滤器的插入4.布隆过滤器的查找
5.布隆过滤器的删除6.布隆过滤器的优点和缺点三、海量数据面试题1.哈希切割
2.位图应用3.布隆过...[2021/9/6]
C++项目基于HuffmanTree实现文件的压缩与解压缩功能C++项目基于HuffmanTree实现文件的压缩与解压缩功能
目录前言一、文件压缩1.文件压缩的概念2.为什么需要压缩3.压缩的分类4.压缩的方法二、HuffmanTree文件压缩与解压缩1.HuffmanTree的概念2.HuffmanTree的构建3.文件压缩4.文件解压缩三、HuffmanTree压缩解压缩碰到的问题1.创建优先级队列要使用自己写的仿函数...[2021/8/26]
C++11新特性之变长参数模板详解
目录C++11 变长参数模板
变长函数参数包
如何解参数包
sizeof()获得函数参数个数
递归模板函数
变参模板展开
结论
C++11 变长参数模板
在C++11之前,无论是类模板 还是函数模板,都只能按其指定的样子,接受一组固定数量的模板参数;
这已经大大提升了代码的复用!
...[2021/8/26]
超详细讲解Linux C++多线程同步的方式
目录一.互斥锁1.互斥锁的初始化2.互斥锁的相关属性及分类3.测试加锁函数二.条件变量1.条件变量的相关函数三.读写锁1)初始化的销毁读写锁2)以写的方式获取锁,以读的方式获取锁,释放读写锁四.信号量1)信号量初始化2)信号量值的加减3)对信号量进行清理 背景问题:在特定的应用场景下,多线程不进行同...[2021/8/26]
C++内存管理看这一篇就够了
目录1 内存分布图2 C语言和C++内存分配实现2.1 C语言实现2.2 C++实现new的原理delete的原理3 C语言和C++内存管理区别4 内存泄漏总结 1 内存分布图
注意:
1.向下生长:地址由高到低
2.向上生长:地址由低到高
3.栈又叫堆栈,非静态局部变量/...[2021/8/16]
结构体对齐的规则详解及C++代码验证
目录基本概念结构体对齐的规则程序验证 基本概念
CPU一次能读取多少个字节的数据主要是看数据总线是多少位的,16位CPU一次能读取2个字节,32位CPU一次能读取4个字节,64位CPU一次能读取8个字节。并且不能跨内存区间访问,这句话的意思可以理解为,如果CPU是32位的话,那么可以将整个内存区...[2021/8/16]
C++实现LeetCode(211.添加和查找单词-数据结构设计)
[LeetCode] 211.Add and Search Word - Data structure design 添加和查找单词-数据结构设计
Design a data structure that supports the following two operations:
vo...[2021/8/9]
C++ throw关键字实现抛出异常和异常规范
目录一个动态数组的例子
throw 用作异常规范
1) 虚函数中的异常规范
2) 异常规范与函数定义和函数声明
请抛弃异常规范,不要再使用它
在《C++异常入门》一节中,我们讲到了 C++ 异常处理的流程,具体为:
抛出(Throw)--> 检测(Try) --> 捕获(C...[2021/8/9]
C++异常处理入门(try和catch)
目录捕获异常
发生异常的位置
开发程序是一项“烧脑”的工作,程序员不但要经过长期的知识学习和思维训练,还要做到一丝不苟,注意每一个细节和边界。即使这样,也不能防止程序出错。
专家指出,长期作息不规律 + 用脑过度的危害很大,可能会诱发神经衰弱、失眠等疾病。我就是受害者之一,曾被失眠困扰了好...[2021/8/9]
C++实现LeetCode(190.颠倒二进制位)C++实现LeetCode(190.颠倒二进制位)
[LeetCode] 190. Reverse Bits 颠倒二进制位
Reverse bits of a given 32 bits unsigned integer.
Example 1:
Input: 00000010100101000001111010011100
Outp...[2021/8/5]
C++实现LeetCode(191.位1的个数)
[LeetCode] 191.Number of 1 Bits 位1的个数
Write a function that takes an unsigned integer and returns the number of ''1'' bits it has (also known as the...[2021/8/5]
示例详解C++语言中的命名空间 (namespace)示例详解C++语言中的命名空间 (namespace)
目录前言1. 命名空间
2. using 指令
3. 不连续的命名空间
4. 嵌套的命名空间
5. 命名空间内变量、函数、全局变量的作用域5.1 using namespace first_space;5.2 using namespace first_space::second_space;总结 ...[2021/8/5]
浅谈C++类型转换几种情况
目录0. 类型转换的原理1. 初始化和赋值时进行的转换2. 以{}方式初始化时进行的转换(C++11新增)3. 表达式中的转换4. 传递参数时的转换5. 强制类型转换6. 使用auto让编译器自己推断变量类型 0. 类型转换的原理
在进行下面的学习前,我觉得有比较知道不同类型是怎么进行转换的。
...[2021/8/5]
C++实现LeetCode(309.买股票的最佳时间含冷冻期)
[LeetCode] 309.Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期
Say you have an array for which the ith element is the price of a given st...[2021/8/5]
C++实现LeetCode(186.翻转字符串中的单词之二)
[LeetCode] 186. Reverse Words in a String II 翻转字符串中的单词之二
Given an input string , reverse the string word by word.
Example:
Input:&#...[2021/8/4]
C++实现LeetCode(557.翻转字符串中的单词之三)C++实现LeetCode(557.翻转字符串中的单词之三)
[LeetCode] 557.Reverse Words in a String III 翻转字符串中的单词之三
Given a string, you need to reverse the order of characters in each word within a sentence ...[2021/8/4]
C++强制类型转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)
目录1. c强制转换与c++强制转换
2. static_cast、dynamic_cast、const_cast、reinterpret_cast
dynamic_cast
const_cast
reinterpret_cast
3. c++强制转换注意事项
1. c强制转换与c++强制转换
...[2021/8/4]
C++变量引用的概念介绍
本篇介绍的变量引用与之前介绍的指针不是同一概念,它们有本质的区分:
1)不存在空引用。引用必须连接到一块合法的内存。
2)一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
3)引用必须在创建时被初始化。指针可以在任何时间被初始化。
下面代码...[2021/8/4]
C++实现LeetCode(179.最大组合数)
[LeetCode] 179. Largest Number 最大组合数
Given a list of non negative integers, arrange them such that they form the largest number.
Example 1:
In...[2021/8/4]
C++索引越界的解决方法
目录1. 动态数组2.静态数组 避免"索引越界"错误的规则如下(针对C++):
不要使用静态或动态分配的数组,改用array或vector模板
不要使用带方括号的new和delete操作符,让vector模板为多个元素分配内存
使用scpp::vector代替std...[2021/8/4]
C++踩坑实战之构造和析构函数
目录前言构造函数
通过构造函数实现的类型转换
派生类的构造函数
析构函数
继承中的析构函数
应用
总结 前言
我是练习时长一年的 C++ 个人练习生,喜欢野指针、模板报错和未定义行为(undefined behavior)。之前在写设计模式的『工厂模式』时,一脚踩到了构造、继承和 new 组合起...[2021/7/26]
VsCode配置C++/Cmake的步骤详解
Reference
https: zhuanlan.zhihu.com/p/87864677
步骤
1、安装VSCode,直接在官网下载 安装即可
2、配置C/C++环境,安装MinGW编译器,也可以在 官网 下载安装
3、MinGW编译器刚才下载的是个下载器,直接双击安装,配置X8...[2021/7/26]
C++实现LeetCode(100.判断相同树)
[LeetCode] 100. Same Tree 判断相同树
Given two binary trees, write a function to check if they are the same or not.
Two binary trees are considered the...[2021/7/21]
C++实现LeetCode(102.二叉树层序遍历)
[LeetCode] 102. Binary Tree Level Order Traversal 二叉树层序遍历
Given a binary tree, return the level order traversal of its nodes'' values. (ie...[2021/7/21]
C++实现LeetCode(101.判断对称树)
[LeetCode] 101.Symmetric Tree 判断对称树
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, th...[2021/7/21]
C++实现LeetCode(103.二叉树的之字形层序遍历)
[LeetCode] 103. Binary Tree Zigzag Level Order Traversal 二叉树的之字形层序遍历
Given a binary tree, return the zigzag level order traversal of its n...[2021/7/21]
C++实现LeetCode(104.二叉树的最大深度)
[LeetCode] 104. Maximum Depth of Binary Tree 二叉树的最大深度
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along ...[2021/7/21]
C++之Qt5双缓冲机制案例教程C++之Qt5双缓冲机制案例教程
1. 双缓冲机制
所谓双缓冲机制,是指在绘制控件时,首先将要绘制的内容绘制在一个图片中,再将图片一次性地绘制到控件上。
在早期的Qt版本中,若直接在控件上进行绘制工作,则在控件重绘时会产生闪烁的现象,控件重绘频繁时,闪烁尤为明显。
双缓冲机制可以有效地消除这种闪烁现象。自Qt 5版本之后...[2021/7/21]
C++实现LeetCode(97.交织相错的字符串)
[LeetCode] 97.Interleaving String 交织相错的字符串
Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 ...[2021/7/19]
C++实现LeetCode(139.拆分词句)
[LeetCode] 139. Word Break 拆分词句
Given a non-empty string s and a dictionary wordDict containing a list of non-emp...[2021/7/19]
C++实现LeetCode(98.验证二叉搜索树)
[LeetCode] 98. Validate Binary Search Tree 验证二叉搜索树
Given a binary tree, determine if it is a valid binary search tree (BST).
A ume a BST is define...[2021/7/19]
C++实现LeetCode(99.复原二叉搜索树)
[LeetCode] 99. Recover Binary Search Tree 复原二叉搜索树
Two elements of a binary search tree (BST) are swapped by mistake.
Recover the tree without chan...[2021/7/19]
C++实现LeetCode(96.独一无二的二叉搜索树)
[LeetCode] 96. Unique Binary Search Trees 独一无二的二叉搜索树
Given n, how many structurally unique BST''s (binary search trees) that store va...[2021/7/19]
C++实现LeetCode(241.添加括号的不同方式)C++实现LeetCode(241.添加括号的不同方式)
[LeetCode] 241. Different Ways to Add Parentheses 添加括号的不同方式
Given a string of numbers and operators, return all po ible results from computing all t...[2021/7/19]
C++实现LeetCode(312.打气球游戏)
[LeetCode] 312. Burst Balloons 打气球游戏
Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it r...[2021/7/19]
C++实现LeetCode(91.解码方法)C++实现LeetCode(91.解码方法)
[LeetCode] 91. Decode Ways 解码方法
A me age containing letters from A-Z is being encoded to numbers using the following mapping:
''A'' -&...[2021/7/19]
c++中的继承关系
1 什么是继承
继承概念
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。
面向对象的继承关系指类之...[2021/7/19]
C++实现LeetCode(93.复原IP地址)
[LeetCode] 93.Restore IP Addre es 复原IP地址
Given a string containing only digits, restore it by returning all po ible valid IP addre combinations.
...[2021/7/19]
C++基于灰度图上色GrayToColorFromOther的实现
目录场景需求功能函数代码C++测试代码 场景需求
之前有提到给灰度图上色的需求,在此基础上,还有一种需求,就是基于另一张参考灰度图的色板来给当前的灰度图上色,比如参考灰度图的数值区间为-10到10,颜色从蓝到绿再到红,而当前的灰度图的数据区间...[2021/7/19]
C++实现LeetCode(137.单独的数字之二)
[LeetCode] 137. Single Number II 单独的数字之二
Given a non-empty array of integers, every element appears three times except for one, ...[2021/7/19]
线段树详解以及C++实现代码
目录应用场景算法思想查询操作修改操作算法实现建树查询修改总结 应用场景
假设有这样的问题:有n个数,m次操作,操作分为:修改某一个数或者查询一段区间的值
分析下,如果针对数组元素的修改可以是O(1)完成,求某个区间值需要O(n)才可以完成,如果m和n都很大的情况,这个复杂度就很难接受了。
...[2021/7/19]