C++
文章平均质量分 51
方人也WJ
一本正经的胡说八道,面向失业编程的博主!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STL浅谈(一)——vector
在C++中,STL (Standard Template Library)是必学,也是非常重要的一块内容。STL为特定场景的数据保存提供了极大的方便。同时STL也是面试官必问的问题之一。STL有着高可重用性,高性能,高移植平台和跨平台的优点。这篇博客叫STL浅谈,因为STL涉及到的内容太多了,这里只能随便介绍介绍。STL的构成STL主要由六大块构成:容器:用于存储数据的工具,例如:vector,list,deque, set,map等算法:实现了按照用户的要求对容器中数据进行特定的操作,例如s原创 2020-09-06 22:03:02 · 351 阅读 · 0 评论 -
ubuntu 20.04下编译供C++/python使用的opencv
最近想在linux环境下使用opencv作图像处理工作。之前写过一篇Windows下visual studio 2019下配置opencv4.3.0。今天来试试在Linux ubuntu 20.04的系统下编译opencv。首先opencv官网中并没有linux下的编译好的包,因此需要下载源码进行编译。下载源码:源码地址在opencv官网中可以找到,我这里用的是最新版的4.4.0. 官网地址:https://opencv.org/,具体操作如下两张图:源码下载至一个指定文件夹,以/home/op原创 2020-07-27 17:25:30 · 2374 阅读 · 4 评论 -
手把手教你用C++写贪吃蛇
最近女朋友挺无聊的(不是左手也不是右手),决定找个小游戏让她玩玩,想来想去就是贪吃蛇比较经典,但是老版的诺基亚挺难找的,于是决定用C++写一个贪吃蛇来哄哄女朋友,也顺便更新一下博客。由于代码分多个文件写成,因此不太好在博客中贴出源代码,源代码已上传至GitHub(麻烦各位爸爸们看代码时顺手给个star!),下面说一下思路:如果想写出贪吃蛇的游戏首先得知道贪吃蛇的玩法,简而言之就是一条蛇在转悠,越转越长,同时要吃东西。这么说各位看官肯定都明白了吧?我相信各位的回答一定是下面这样的:对于贪吃蛇游戏来说,原创 2020-07-24 22:11:52 · 5549 阅读 · 10 评论 -
C++实现经典排序算法(二)——选择排序和快速排序
俗话说得好:排序千万种,方便第一种,排序不规范,找bug两行泪。上次写了一篇关于插入排序和冒泡排序的博文,这次再来介绍一下选择排序法和快速排序法。选择排序法,顾名思义就是将需要的数选择出来,再放到需要的地方。...原创 2020-07-15 14:55:17 · 583 阅读 · 0 评论 -
visual studio下错误LNK2019:无法解析的外部符号public:xxx _thiscall的可能原因之一
最近在写C++程序的时候碰到了一个连接错误,为了解决这个bug花了很长很长时间,因此写下这篇博客记录一下。首先上个错误情况:这是一个连接错误,准确的来说就是连接器无法在库中或其他声明文件找到你在使用中的相关定义函数或类或变量,详细说明可以看下微软的官方声明。我的初衷是想自己实现一个Stack类——MyStack,考虑到stack是允许...原创 2020-06-19 15:16:51 · 2292 阅读 · 0 评论 -
C++实现经典排序算法(一)——插入排序和冒泡排序
排序算法应该是程序员面试的时候必然会被问到的问题之一。总结起来就下面几个问题:你知道哪些排序算法?具体介绍一下xx排序算法的实现原理xx排序算法的时间复杂度和空间复杂度分别是多少?xx排序算法是稳定的嘛?面对以上几个问题,首先你得知道什么是排序,什么是时间/空间复杂度以及什么叫做稳定排序。首先,排序问题很好理解,就是将无序的一组数据变成有序的(可以是升序也可以是降序)。举个例子,< 3, 2, 5, 4, 7, 9, 0, 1>这一组数据经过你的代码处理后变成了<0, 1,原创 2020-06-09 13:01:31 · 479 阅读 · 0 评论 -
windows10在visual studio2019下配置使用openCV4.3.0
openCV是基于C++开发的一个强大的图像处理库。在用C++处理图像或视频时通常会使用到openCV这个库,但是这个库并非C++中的标准库,因此在使用之前需要先下载,并加载配置到我们的项目中。那么怎么配置呢?首先你得有以下的所有工具。windows10系统。可以通过镜像安装,也可以通过CD或U盘安装。Visual Studio2019,基于实(省)用(钱),我使用的是community免费版,点击此处可以下载并安装.点击下面下载中的community2019然后安装即可,具体步骤可参考其他原创 2020-06-01 17:53:38 · 1180 阅读 · 3 评论 -
C++中的引用
在C++中有一个和指针很相似的对变量值间接使用的东西——引用 “&”。我们可以暂时把引用想像成为一个和指针一样的新的名词,但与指针有所不同的是,引用在定义的同时必须初始化,而指针可以先定义,再初始化;与指针的另一个不同点就在于,引用一但被初始化了就不能再更改了,而指针可以。例如:int i = 5;int j = 6;int* p; //先定义指针p = &i; ...原创 2018-08-12 22:29:52 · 408 阅读 · 0 评论 -
C++中的函数库
和C语言一样,在C++中也有各种各样的函数库,例如在C++程序中的第一行一般都会写成 #include <iostream>这便是包含C++中的标准库函数,在C++中,还提供了有关字符串操作的库函数,string,例如:#include <iostream> //默认库函数#include <string> //包含有关字符串操作的库函数...原创 2018-08-24 18:20:14 · 1204 阅读 · 0 评论 -
C++中的封装——类class
在C语言中可以使用struct(结构体)将相应的数据封装起来,统一使用,同样地在C++中也可以使用struct将相应的属性及方法封装起来,例如下面的程序:#include <iostream>using namespace std;struct S{ int e1, e2;};void f(const S& s){ //以引用的方式传递地址 ...原创 2018-08-17 19:54:15 · 9333 阅读 · 1 评论 -
C++回溯算法与八皇后问题
今天想写一篇有关回溯法的问题,但是不知道开头应该介绍些什么东西。所以简单粗暴一点,直接上问题。一种经典的回溯算法就是八皇后问题,何为八皇后问题呢?八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。 ——引自维基百科为了更好的理解,上一张图:图中画×的是满足条件的,画〇则不满足,因为有两个在同一条直线上。那么问题来了原创 2020-06-07 18:21:31 · 1759 阅读 · 4 评论 -
C++与openCV绘制Julia集合
最近被几(公)张(司)图(任)片(务)给美(吓)哭了,于是决定来研究研究茱莉亚(Julia)集合。Julia集合本质上是对级数的敛散性的描述,仅仅只说数字,想必大家早都看睡着了,因此当敛散性和计算机图像二者结合到一块儿的时候就非常非常美了。话不多说,先上几张图:想要问问你美不美~,这些图片都是靠openCV实现的,那么接下来就来分析分析如何画出这么美丽的图片。首先,你得了解基本的数学知识——敛散性。敛散性分为收敛和发散。收敛指的是一个级数最后的求和结果趋于一个常数,发散是指一个级数最后的求和结果趋原创 2020-06-05 18:05:54 · 1112 阅读 · 0 评论 -
C++中的this指针
关键词this是一个指针,这个指针是指向自己的一个指针,也即this是向某些需要使用到本身地址的地方传递对象本身的地址。this只能在类中的方法使用,不能出现在main或其他函数中。例如下面的程序:#include <iostream>using namespace std;class A{public: A(){} ~A(){} void ad...原创 2018-08-28 16:06:49 · 475 阅读 · 0 评论 -
用C++解决约瑟夫环的问题
犹太历史学家弗拉维奥·约瑟夫在他的日记中提到过这么一个问题:他和他的40个战友被罗马军队包围在洞中。它们讨论是自杀还是投降,最终决定采用抽签的方式决定自杀的顺序。算法是这样的:所有人站成一圈,依次报数从1到3,每报到3的则自杀,下一个再从1开始报数。这样,所有人会依次自杀,直到最后一个。那最后一个死不死又有谁知道呢?那么站的位置就显得很重要了,到底站在哪个位置才能最后一个死呢?这便衍生成了一个计算...原创 2020-03-18 21:46:33 · 2512 阅读 · 0 评论 -
C++中的类模板和函数模板
C++编程的时候我们通常会遇到这么一种情况就是,有时候我们需要一个数组或类来存储一组数据,但数据类型我们却无法确定,有时候可能时整型数,有可能是浮点数,也有可能是字符串。对于这种只有在程序具体运行的时候才能知道需要存储数据的类型的情况下,我们能做的就只有对每一种可能产生的类型都申请一个固定的内存,一旦需要便可以使用。但这样就造成了一个问题,如果可能产生的数据类型很多,但实际上用到的类型很少,就会产...原创 2020-02-26 20:13:28 · 600 阅读 · 0 评论 -
C++的移动语义
在C++中对于一个对象的复制有多种方法,其中常用的有拷贝构造函数或者采用重构赋值法。拷贝构造函数(copy constructor):#include<iostream>using namespace std;class Complex{ int real; int imag;public: Complex(int r, int i): real(...原创 2020-02-18 07:28:55 · 1078 阅读 · 0 评论 -
C++异常处理机制
有的程序在编译时看起来是没有报错或异常,但是往往有些程序在运行时会出现意想不到的错误。这样有可能会产生意想不到的效果,例如在某个定时任务中(每10分钟运行一次),需要处理一批Excel表中的数据。处理完毕后将关闭该Excel表格。一旦在需要处理的Excel表格中的数据格式不符合程序的格式,程序会报错从而终止运行。经过24 h 后,将会有成百上千的Excel在后台被打开,这样服务器的后台会大量被打开...原创 2019-05-03 05:45:16 · 326 阅读 · 0 评论 -
C++中的抽象函数与抽象类
抽象函数指的是没有具体内容的函数,一般用"= 0"修饰,例如:class A{ public: virtual void func() = 0;};上面的虚函数func即为一个抽象函数。所谓的抽象类即指含有至少一个抽象函数的类。抽象类不能被实例化,抽象函数一旦被实例化,则会产生报错 “can not declare variable xx to be abstract type xx...原创 2019-03-31 21:55:17 · 7409 阅读 · 1 评论 -
C++中的后期绑定——多态
在C++中除了继承,还有一个重要的性质就是多态性,也叫后期绑定。例如在一个画图形的例子中:这里写代码片原创 2019-03-25 00:12:39 · 630 阅读 · 0 评论
分享