c++
文章平均质量分 63
高万禄
一个菜鸡
展开
-
【C++】为什么C++有时候构造的类对象的成员变量没有被默认初始化
如果变量是一个静态的局部变量,或者是一个全局变量(包括全局静态变量),则会被默认初始化为其类型的默认值。例如,整型变量将被初始化为0,浮点型变量将被初始化为0.0,指针变量将被初始化为nullptr,而对象将被调用默认构造函数。需要注意的是,C++11之前,如果变量是一个非静态的局部变量,且未进行初始化,则其将不会被默认初始化,其值是未定义的。因此,在定义变量时,最好显式地进行初始化,以确保其值是可预测的。如果变量是一个非静态的局部变量,且未进行初始化,则其将不会被默认初始化,其值是未定义的。原创 2024-03-13 17:40:02 · 475 阅读 · 0 评论 -
树莓派Linux使用OpenCV进行摄像头视频流直播 Linux WiFI图传 Node Addon C++、C++、OpenCV、H264、WebSocket
树莓派Linux使用OpenCV进行摄像头视频流直播 Linux WiFI图传 Node Addon C++、C++、OpenCV、H264、WebSocket原创 2023-04-19 03:28:57 · 717 阅读 · 1 评论 -
第20章 接口手册【C++】
ABCDEFGHILMOPQRSTUVW算法接口在泛型编程中我们接触到了标准库中的算法,指示了解了算法的特性,并没有对其接口深入了解,下面是常见算法的使用方式及其接口1、beg和end表示元素范围的迭代器,算法对一个由beg和end表示的序列进行操作2、beg2,end2是表示第二个输入序列开始和末尾位置的迭代器如果没有end2则表示第二个序列和第一个序列长度相同。beg和beg2的类型可以不匹配,但需要保证对两个序列中的元素都可以执行特定操作或调用给定的可调用原创 2022-08-10 00:34:32 · 761 阅读 · 0 评论 -
第19章 特殊工具与技术【C++】
到此你会感觉C++越来越离谱,不好好想着解决问题,语法与特性先成为了一大问题。只能说太复杂了,上手难度较高。本章分别从,控制内存分配、运行时类型识别、枚举类型、类成员指针、嵌套类、union联合体、局部类、不可移植的特性,入手进行学习太离谱了吧,new与delete还能重载!先回顾一下new与delete,下面使用到了多维数组的内存动态分配,在C++中new与delete就相当于C中的malloc与free函数当用户自定义了new与delete 的operator,则有限使用自定义的,没找到则将寻找new原创 2022-08-09 23:01:55 · 380 阅读 · 0 评论 -
第18章 用于大型程序的工具【C++】
关键词namespace,随后为命名空间的名称,然后为花括号。花括号内主要包括,类、变量(及其初始化操作)、函数(及定义)、模板、其他命名空间publicintage;}};mefunc();num);}要注意的是,命名空间作用域后面无须分号与类的声明定义规范非常相似publicintnum;};}print(){A}完全允许在namespace作用域外定义命名空间成员,但是要显式指出命名空间}voidAprint(){...原创 2022-08-01 14:36:31 · 799 阅读 · 0 评论 -
第17章 标准库特殊设施【C++】
如果你已经从第一章按部就班的学到了第17章,我相信你所认识的C++知识已经超过了很多人,因为有学习的同学并没有耐心慢慢全面地学完C++11的全部知识,从17章 标准库特殊设施以及第18章 用于大型程序的工具、第19章 特殊工具与技术这三个单元被统称为高级主题,这些内容往往在大型工程中意义重大首先介绍本章整体内容,tuple类型、bitset类型、正则表达式、随机数、进一步深入IO操作tuple与pair有些类似,但是tuple支持多个元素,多种元素类型,在希望将一些数据组合成单一对象,但不想麻烦地自定义数原创 2022-07-27 01:08:31 · 297 阅读 · 0 评论 -
第16章 模板和泛型编程【C++】
已经学习了标准容器,我们就会产生好奇,为什么它可以存储任意类型呢?向自定义的函数的形参与实参都是有着严格的类型匹配,面向对象编程和泛型编程都能处理在编写程序时不知道类型的情况,不同之处在于,OOP能处理类型在程序运行之前都未知的情况,而泛型编程中,在编译时就能获知类型了,在OOP总我们知道利用虚函数与动态绑定机制可以做到有时某种算法的代码实现是相同的,只有变量类型不同,如下面的情况泛型编程就是为解决这种问题而生的函数模板就是一个公式,可以来生成针对特定类型的函数版本编译器生成的版本通常被称为模板的实例原创 2022-07-20 17:28:02 · 460 阅读 · 0 评论 -
第15章 面向对象程序设计【C++】
学习本章将会得到,面向对象程序设计的三个基本概念,数据抽象、继承、动态绑定(多态)通过使用数据抽象,我们可以将类的接口与实现分离;使用继承可以定义类似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略类似类型的区别,而以统一的方式使用它们通常在层次关系的根部有一个基类即被继承的类,其他类则直接或简介地从基类继承而来,这些继承得来的类称为派生类动态绑定在有些地方下面的这种操作叫做面向对象里面的多态,在此我们暂且称其为动态绑定定义基类上面出现的新事物为派生类要通过使用类派生列表指定从那原创 2022-07-09 11:11:28 · 252 阅读 · 0 评论 -
第14章 操作重载与类型转换【C++】
C++语言定义了大量运算符以及内置类型的自动转换规则,当运算符被用于类类型的对象时,C++语言允许我们为其指定新的含义,但无权发明新的运算符号可以被重载的运算符例重载+运算符的某些运算符不应被重载例如取址运算符与逗号运算符,它们本就有它们的存在的意义,重载它们使得规则变得混乱,一般来说它们不应被重载而逻辑与、逻辑或涉及到短路求值问题,通常情况下,不应重载逗号、取地址、逻辑与、逻辑或运算符重载运算符得返回类型通常情况应该与其内置版本得返回类型兼容:逻辑运算符和关系运算符返回bool、算数运算符返回一个类原创 2022-07-02 11:13:15 · 278 阅读 · 0 评论 -
第13章 拷贝控制【C++】
从此章我们即将开始第三部分的学习,之前我们已经学过了两个部分,C++基础和C++标准库,第三部分为类设计者的工具也就是我们即将开始传说中的对象对象编程之旅,面向对象程序设计(Object Oriented Programming)本章进行学习类如何操控该类型的拷贝,赋值,移动或者销毁,有:拷贝构造函数、移动构造函数、拷贝赋值运算符、移动赋值运算符以及析构函数等重要知识定义:如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是构造拷贝函数简单上手合成拷贝构造函数默认情原创 2022-06-25 13:33:50 · 776 阅读 · 0 评论 -
第1章 开始【C++】
第1章 开始简介C++是C的超集、通俗的说可以在C++程序内写C语言代码,而在C程序内不能使用C++的特性、可见C++有很大的包袱,背负着许多的任务。如果您没有学习过C语言那么则可以在学习过C++后然后学习C与C++的对比,如果学习过C语言也会使得学习C++非常快。编写一个最简单的C++程序//example1.cppint main(){ return 0;}C++的程序入口为main函数,会从执行main函数内的代码开始我们的程序,main函数返回的内容必须为int类型如何编译原创 2022-04-19 01:10:17 · 945 阅读 · 0 评论 -
第2章 变量和基本类型【C++】
第2章 变量和基础类型基本内置类型算术类型标识符 含义 大小bool 布尔类型 未定义大小char 字符 8位wchar_t 宽字符 16位char16_t Unicode字符 16位char32_t Unicode字符 32位short 短整形 16位int 整形 16位long 长整形 32位long l原创 2022-04-19 01:11:36 · 1264 阅读 · 0 评论 -
第3章 字符串、向量和数组【C++】
字符串、向量和数组【C++】、命名空间的using声明、头文件不应含using声明、标准库类型string、定义和初始化string对象、string对象上的操作、getline函数的返回值、std::string::size_type类型、字符串相加要注意的事、处理string对象中的字符、遍历字符串字符、下标的随机访问、标准库类型vector、定义和初始化vector、向vector内添加元素、vector其他操作、遍历vector、不能用下标的形式添加元素...原创 2022-04-22 22:36:20 · 1322 阅读 · 0 评论 -
第4章 表达式【C++】
什么是表达式?我可以简单地认为是需要运算的式子,官方的解释为表达式由一个或多个运算对象组成,对表达式求值将得到一个结果,字面值和变量是最简单的表达式,其结果就是字面值和变量的值。...原创 2022-04-28 21:41:05 · 1274 阅读 · 0 评论 -
第5章 语句【C++】
C++ 中的大多数语句都已分号结尾,如果编码人员忘记,则会在编译时报错空语句就是什么也不做的语句,同理也是以分号结尾关于分号分号我们漏写会报错,多写了则会将多的当做空语句处理,总之不要多写也不要少些,以免出现逻辑上的BUG,往往是难以寻找的复合语句块复合语句是指用花括号括起来的语句和声明的序列,复合语句也被称作为块,在函数、for、if、while、switch等语句都会使用到{}块不以分号作为结束语句作用域可以在块内定义变量,定义在控制结构当中的变量只在响应语句的内部可见,一旦跳出此语句,变量原创 2022-05-07 11:27:55 · 355 阅读 · 0 评论 -
第6章 函数【C++】
第6章 函数在前面我们已经使用过定义main函数,以及也见过其他的自定义函数,函数是一个命名了的代码块,我们通过调用函数执行相应的代码,函数可以有0个或多个参数,而且通常产生一个结果,C++可以重载函数,也就是说,同一个名字可以对应几个不同的函数函数基础函数的实参的类型要与函数的形参类型匹配,后者实参赋值给形参可以进行类型转换。//example1.cpp#include <iostream>using namespace std;//编写函数 返回类型为intint doub原创 2022-05-11 09:23:53 · 360 阅读 · 0 评论 -
第7章 类【C++】
类的基本思想是数据抽象和封装,数据抽象是一种依赖于接口和实现分离的编程技术。封装实现了类的接口和实现额分离,封装后的类隐藏了它的实现细节。类要想实现数据抽象和封装,需要首先定义一个抽象数据类型。C语言中没有类的概念,但是有struct结构体供我们定义抽象的数据类型,但是本身不支持封装、以及类方法。如果结构体大小是定长时,结构体的实例内部内存是连续的,那么则会有许多的用途,比如串口协议等。方法、thisthis的数据类型就是,Person*,他是一个相应类数据类型的常量指针我们发现刚刚的成员函数的代原创 2022-05-17 10:50:56 · 215 阅读 · 0 评论 -
第8章 IO库【C++】
第8章 IO库在本章我们只是大致了解C++中的IO库,了解相关的stream类的使用以及它们的特性与概念,关于文件操作更详细的细节将会再后面进行学习,在此不必过分要求自己必须掌握文件操作,总之与我们在此学的是C++对IO的一些封装C++中不直接处理输入输出,而是通过一系列定义在标准库中的类型处理IO,这些类型支持从设备读取数据,向设备写入数据的IO操作,设备可以是文件,控制台窗口等还有一些类型允许操作内存IO,即从string读取数据,向string写入数据我们已经接触了istream输入流类型,原创 2022-05-26 15:09:39 · 1729 阅读 · 0 评论 -
第9章 顺序容器【C++】
第9章 顺序容器顺序容器为开发者提供了控制元素存储和访问顺序的能力,顺序不依赖元素的值,而是元素加入元素容器时的位置相对应顺序容器概述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2e3fN9h-1653549026113)(./img/屏幕截图%202022-05-26%20114318.jpg)]如list、forward_list是链式存储结构,而vector、deque、array、string为顺序存储结构,在增删改等操作上它们会有不同的特性构造函数默原创 2022-05-26 15:10:37 · 549 阅读 · 1 评论 -
第12章 动态内存【C++】
动态内存的动态体现在哪里,还要从我们前面所知道的全局变量,局部变量,以及static变量进行对比,全局变量的生命周期横穿整个程序运行时知道程序运行结束,局部变量随着调用栈上下文的离开进行释放,static初始化在第一次被运行时变量被定义,知道程序运行结束才释放,而动态内存就是编码人员手动显式的申请的内存,只有显式地进行释放才会被释放,否则知道程序运行结束C语言也有动态内存,而其也是一件非常危险地是事情,经验不足的开发人员可能编码造成内存泄露。在C++中,标准库定义了两个智能指针类型来管理动态分配的对象,当一原创 2022-06-21 13:42:11 · 385 阅读 · 0 评论 -
第11章 关联容器【C++】
与顺序容器不同的是,关联容器中的元素是按关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,那么典型的就是我们常见的map与set数据结构map类型通常被称为关联数组使用set定义关联容器当定义一个map时,必须指明关键字类型与值类型,而定义set只需指明关键字类型空容器、列表初始化、映射键值对列表初始化初始化multimap与multisetmulti的意义就是,map一个关键词可以存储多个值,set也可以存储多个相同的值关键字类型要求对于有序容器,map、m原创 2022-06-15 17:22:42 · 228 阅读 · 0 评论 -
第10章 泛型算法【C++】
标准库为我们提供了容器,同时为开发者提供了许多算法,这些算法中大多数都独立于任何特定的容器,也就是说这些算法是通用的(generic,或者称为泛型的):它们可用于不同类型的容器和不同类型的元素,本章主要学习泛型算法与对迭代器更加深入的讨论大多数算法在头文件,中定义了一组数值泛型算法下面简单使用find算法可见迭代器令算法不依赖于容器、不同的容器可以使用相同的算法算法依赖于元素类型的操作,如find就依赖于元素类型间的==操作,其他算法可依赖>、...原创 2022-06-10 15:34:44 · 297 阅读 · 0 评论 -
C++实现简单的3D渲染【线性代数】
C++实现简单的3D渲染原创 2022-05-01 17:21:04 · 7194 阅读 · 2 评论 -
用switch语句编程设计一个简单的计算器程序,指定的算术运算符为加(+)、减:将一面额为10元倍数的整钱(<=100元)换成1元、2元和5元的零钱组合(每种面值都要有)。输入要换的面额(如10元),
用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。编程要求:程序能进行浮点数的算术运算,有用户输入输出提示信息。提示:因为除法中的除数不能为0,因此关键在于如何比较浮点变量data2和常数0是否相等。#include<iostream>int main(int argc,char**argv){ double num1; doubl原创 2021-07-16 10:47:04 · 2688 阅读 · 0 评论 -
2021赛季RoboMaster飞镖视觉开源GUET
github仓库地址: https://github.com/gaowanlu/RMDartsVisionDART2021项目简介桂林电子科技大学 RoboMaster2021赛季 飞镖视觉开源协议 MIT项目环境工具依赖库硬件系统g++pthread树莓派Zero WRaspbian-bustermakeopencv3cmake视觉项目贡献高万禄 张喆宇 张李昱 21赛季的队友们项目配置注意事项关于Opencv3环境解决方案原创 2021-07-11 05:21:56 · 1732 阅读 · 0 评论 -
迷宫游戏|自动寻径|随机生成迷宫地图|UI|闯关|地图反转
Matrix-new遵循开源协议MIT开发工具及运行环境开发IDE环境 : Visual Studio 2019代码管理工具: Git开发语言:C++程序运行环境(开发环境为(Windows10)其他兼容性未知)依赖库EasyX 图形界面库EasyX官网:EasyXGit仓库地址Gitee:Gitee 仓库Github:https://github.com/gaowanlu/MazeGame/在运行程序时可能遇到的问题缺少dll文件?解决方案https://cn.dll原创 2021-06-24 23:24:11 · 716 阅读 · 0 评论 -
回溯法解八皇后
任务描述本关任务:假设已放了8个皇后的棋盘(在每列、每行上只有一个皇后,且一条斜线上也只有一个皇后)。用回溯法解8个皇后问题的全部解。编程要求定义函数Try(i),用来试探放第i行上的皇后。讨论将第i行上的皇后放在j列位置上的安全性,可以逐行地放每一个皇后,在做这一步时,第i行上还没有皇后,不会在行上遭到其他皇后的攻击。只考虑来自列和对角线的攻击。定义q(i)=j表示第i行上的皇后放在第j列,一旦这样做了,就要考虑第i个皇后所在的列不安全了,让C[j]=false,同时,要考虑通过(i,j)位置的两原创 2021-04-26 11:17:32 · 769 阅读 · 0 评论 -
迷宫游戏maze开源项目(自动生成地图、自动寻径、EasyX可视化等)
Matrix-new遵循开源协议MIT项目简介此项目是基于Windows平台EasyX图形库开发的迷宫游戏,具有多种自动生成迷宫地图特性以及迷宫寻径功能开发工具及运行环境开发IDE环境 : Visual Studio 2019代码管理工具: Git开发语言:C++程序运行环境(开发环境为(Windows10)其他兼容性未知)依赖库EasyX 图形界面库EasyX官网:EasyXGit仓库地址Gitee:Gitee 仓库链接Github:Github仓库链接在运行程序时可能原创 2021-04-19 11:38:36 · 1030 阅读 · 1 评论 -
旅行商问题之回溯法
旅行商问题之回溯法代码实现//回溯法 旅行商问题#include<iostream>#include<cstdlib>#include<algorithm>using namespace std;const int INF=1e7;//正无穷int n;//节点个数int m;//边的个数int**matrix;//邻接矩阵int*x;//当前路径int*bestx;//最优路径int cl;//当前路径长度int bestl;//最优路径长度原创 2021-04-12 21:07:24 · 553 阅读 · 0 评论 -
最优加工顺序之回溯法
最优加工顺序之回溯法代码实现/*第一台机器可以连续加工,第二台机器工作的开始时间为第一台机器结束与第二台机器结束的最大值 * */#include<iostream>#include<algorithm>using namespace std;const int INF=0x3f3f3f3f;#define MAX 9999int n;//存储机器零件的个数int T1[MAX];int T2[MAX];int tempChoose[MAX];int bes原创 2021-04-12 21:05:09 · 679 阅读 · 0 评论 -
n皇后问题之回溯法(2021/3/26)
n皇后问题#include<iostream>#include<cmath>using namespace std;int resultCount=0;//记录解的个数int n=0;//皇后个数int result[1000]={0};bool Place(int t){ bool re=true; //判断与前面的t-1个皇后位置是否冲突 for(int i=0;i<t;i++){ if(result[t]==resul原创 2021-03-26 23:59:23 · 224 阅读 · 0 评论 -
动态规划之01背包问题(2021/3/4)
动态规划之01背包问题递归式代码实现#include<iostream>using namespace std;#define SIZE 5//有SIZE个物品#define LoadingCapacity 10 //装载能力 int Weight[SIZE+1]={0,2,5,4,2,3};//重量 2,5,4,2,3int Value[SIZE+1]={0,6,3,5,4,6};//相应物品的价值 6,3,5,4,6int C[SIZE+1][LoadingCapacit原创 2021-03-04 19:38:58 · 239 阅读 · 1 评论 -
动态规划之石子合并(2021/2/4)
问题引入代码实现#include<iostream>using namespace std;#define N 1000#define INF 99999//无穷 int stones[N];//存储每堆石子数量 int Min[N][N],Max[N][N];int sum[N];//计算1 - i堆的石子和 //公路玩法 void highway(int n){ //初始化Min Max矩阵 for(int i=1;i<=n;i++){ Min[i][i]原创 2021-02-04 23:33:46 · 358 阅读 · 0 评论 -
动态规划之最优三角分割(2021/2/3)
问题引入代码实现#include<iostream>using namespace std;#define N 1000int map[N][N];//图的邻接矩阵int strategy[N][N];//记录i j 中间的最优割点int m[N][N];//记录i j之间切割的最优权重 //三角切割 void convex_triangular_cutting(int n){ //初始化最优权重与策略矩阵 for(int i=0;i<n;i++){ stra原创 2021-02-04 21:20:42 · 385 阅读 · 1 评论 -
动态规划之矩阵连乘(2021/2/2)
问题引入代码实现//问题:矩阵连乘//日期:2021/2/1//编码:高万禄#include<iostream>using namespace std;#define N 1000//最多N-1个矩阵int matrix_data[N];int mul_num[N][N],strategy[N][N];//发现策略信息void matrix_mul(int&matrix_num){ //置空信息矩阵 for(int i=0;i<N;i++){ for原创 2021-02-02 22:57:40 · 249 阅读 · 0 评论 -
动态规划之游艇租赁(2021/2/1)
问题引入游艇租赁规则游艇租赁价格表代码实现#include<iostream>#include<cstdlib>using namespace std;#define N 1000int price_map[N][N];//价格表int real_price[N][N];//最优价格int strategy[N][N];//策略选择//打印解决方案 void print(int i,int j){ if(strategy[i][j]==0){ cou原创 2021-02-01 15:04:04 · 258 阅读 · 0 评论 -
分治法之大整数乘法(2021/1/26)
问题引入代码实现//大整数乘法 #include<cstdlib>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;const int M =1000;//存放两个要乘的大数 char A[M];char B[M];struct Node{ char num[M]; int l;//记录长度 int c;//记录次幂 };//原创 2021-01-26 15:55:35 · 344 阅读 · 0 评论 -
分治法之快速排序(以及快速排序的优化)(2021/1/24)
问题引入快速排序以及其优化代码实现#include<iostream>#include<cstdlib>using namespace std;struct Data{ int flag;};//快速排序划分函数,返回基准元素最后的下标 int Partition(struct Data*list,int low,int high){ struct Data temp; int i=low,j=high,p=low; while(i<j){ //原创 2021-01-24 19:04:50 · 316 阅读 · 0 评论 -
分治法之合并排序(2021/1/23)
问题引入代码实现#include<iostream>#include<cstdlib>using namespace std;struct Data{ int flag;};void MergeFunction(struct Data*list,int low,int middle,int high){ //申请辅助空间 int size=high-low; struct Data*space=(struct Data*)malloc(sizeof(struc原创 2021-01-23 09:39:01 · 256 阅读 · 0 评论 -
(2021/1/16)爱因斯坦的阶梯
题目代码实现#include<iostream>using namespace std;void function_1(void){ int n=1; while(1){ if(n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0){ cout<<n<<endl; return; }else{ ++n; } }}void functio原创 2021-01-16 00:41:36 · 242 阅读 · 0 评论