C++
蹦蹦跳跳小米粒
努力奋斗的游戏coder
展开
-
UE4 非debug方式绘制line
在UE中,我们可以使用DrawDebugLine的方式在世界上绘制直线,或者使用相关的一些接口来绘制长方体、球体等,但是当游戏发布后,这种Debug类型的绘制内容一般会被优化掉,不会在游戏世界中显示。在这里我们使用另一种方法来绘制,使得游戏在非debug状态下也可以绘制线段。在这里首先定义一个ULineBatchComponent类型的指针:ULineBatchComponent* const LineBatchComponent = GetWorld()->PersistentLineB原创 2020-10-23 16:25:45 · 3946 阅读 · 0 评论 -
C++值传递、指针和引用的使用特点
如果函数传参的目的仅仅是传参而不是修改参数的值:如果数据对象很小,比如是内置数据类型,或小型的struct,则使用值传递;如果数据对象是数组,则只能使用指针,并且将指针声明为指向const的指针(constint*、int const*),保证指针所指向内容不会被修改;如果数据对象是一个比较大的struct,则应该使用const指针或者const引用,来防止参数传递时发生结构体的复制,导致程序效率下降;如果数据对象时类对象,则使用const引用;如果函数传参的目的包括了修改传入的参数的.原创 2020-10-12 22:14:13 · 395 阅读 · 0 评论 -
C++ unsigned int 和 int 的比较问题
今天在工作时发现了一个问题,当我使用vector的size与-1进行比较的时候,会发现-1是大于size的(此时size为整数)。出现这种问题的原因在于,vector的size是无符号整型,当一个signed int和一个usigned int进行比较的时候,有符号整型会被自动转化为无符号整型,因此负数就会被转化为很大的正数,所以就会出现负数大于正数的情况。...原创 2019-11-24 17:12:42 · 2415 阅读 · 0 评论 -
网络玄学问题:单步调试状态与非调试状态程序结果不一致
这两天工作中遇到一个调试问题,就是在当我的客户端连接一个错误的ip地址的服务器的时候,会出现单步调试的结果和直接快速运行的程序结果输出不一样的情况,当单步调试的时候可以按照希望的逻辑走到应该报错的地方,但是当程序直接运行,没有下断点的时候,就会走显示网络没有问题的逻辑。经过一段时间的分析探讨,我发现问题的原因在于,我们的网络是异步的,当连接命令交给底层的网络模块后,网络内部的逻辑会去执行它自己的逻...原创 2019-10-21 10:55:03 · 876 阅读 · 0 评论 -
C++实现根据二叉树的前序遍历与中序遍历构建二叉树
在记录题目解法之前,首先记录一下有关二叉树遍历的相关知识。二叉树的遍历分为前序遍历,中序遍历和后序遍历三种遍历方法。前序遍历的顺序为当前节点->左子节点->右子节点的顺序,中序遍历的顺序为左子节点->当前节点->右子节点的顺序,后序遍历的顺序是左子节点->右子节点->当前节点的顺序。例如如下二叉树:前序遍历的结果为: 1,2,4,7,3,4,5,8中...原创 2019-07-07 12:24:49 · 8959 阅读 · 4 评论 -
日常练习知识总结(一)
1.合并分E-R图各个局部应用所面向的问题不同,各个子系统的E-R图之间必定会存在许多不一致的地方,称之为冲突。子系统E-R图之间的冲突主要有三类:①属性冲突②命名冲突③结构冲突①属性冲突属性域冲突,即属性值的类型、取值范围或取值集合不同。例如零件号,有的部门把它定义为整数,有的部门把它定义为字符型。年龄,某些部门以出生日期形式表示职工的年龄,而另一些部门用整数表示职工的年龄...原创 2019-07-19 23:49:13 · 476 阅读 · 0 评论 -
[编程题]交错01串
题目描述如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。输入描述:输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只...原创 2019-08-03 18:58:14 · 1154 阅读 · 0 评论 -
[编程题]六一儿童节
题目描述六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。输入描述:第一行:n,表示h数组元素个数 第二行:n...原创 2019-08-03 19:28:29 · 979 阅读 · 0 评论 -
[编程题]疯狂队列
题目描述小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,请...原创 2019-08-03 20:28:02 · 152 阅读 · 0 评论 -
[编程题]等差数列
题目描述如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列输入描述:输入...原创 2019-08-03 21:50:14 · 963 阅读 · 0 评论 -
[编程题]操作序列
题目描述小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:1、将a_i放入b序列的末尾2、逆置b序列小易需要你计算输出操作n次之后的b序列。输入描述:输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。输出...原创 2019-08-03 22:08:04 · 646 阅读 · 0 评论 -
Socket编程bind错误码98 EADDRINUSE 处理方法
出现这样的错误可能有两个原因,第一是因为当前主机已经有服务器进程在调用bind和listen在监听我们的目标端口,如果我们在这时再次调用bind函数进行绑定的话,则会产生系统调用错误。第二个原因可能是因为我们所需要bind的目标端口是本机socket已经连接的端口。解决方法:设置套接字SO_REUSEADDR,所有的TCP服务器都应当指定该选项。指定方法: int flag = 1;...原创 2019-10-10 14:59:45 · 8828 阅读 · 0 评论 -
使用distutils编译报错“ 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0””解决办法
今天使用了swig进行C++转python的过程中遇到了很多的问题,其中一个就是使用distutils编译生成可执行python文件的时候报错检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”,经过查阅发现这是因为编译过程中静态库位Debug版本而编译使用的版本为release版本,因此需要重新编译生成这些.lib库,添加后重新编译,问题解决。...原创 2019-07-16 11:24:16 · 627 阅读 · 0 评论 -
C++实现单向链表的逆向打印
本文章记录了实现链表的逆向打印的方法。首先一个比较简单的实现方法是,将链表的所有指针全部反向,这种方法是不值得推荐的,因为打印操作一般是一个只读的过程,很少可以修改要打印的内容。所以在这里我们记录一下比较好的一些实现方法。首先我们可以考虑,反向输出链表的过程实际上是一个先入后出的过程,从头到尾遍历链表,先读到的内容是后打印的。这就让我们想到了stack这一数据结构,我们可以在每读取到一个节点时...原创 2019-07-07 00:35:43 · 1177 阅读 · 0 评论 -
浅析C++中的深拷贝与浅拷贝
深拷贝与浅拷贝是C++中的一个常见概念,同时也是各个公司面试中的常考的题目之一。本人曾经有幸被腾讯的面试官问了这一问题,当时回答的感觉不是太好,因此在准备秋招之前再次对该问题进行一次总结,希望能够得到更深的理解。‘深拷贝与浅拷贝主要是在当类中存在指针的时候会遇到问题,并且深拷贝与浅拷贝的调用情况我个人认为就是是否使用默认的拷贝构造函数的区别。例如我们定义类:class Student{...原创 2019-06-05 11:47:50 · 148 阅读 · 0 评论 -
STL中vector与deque的对比
今天在学习STL相关知识的时候,无意找到了一篇写的超棒的博客,描述了vector和deque这两个看起来都是数组实现的STL数据结构的区别和分别适合的应用场景,在这里记录一下链接!https://www.cnblogs.com/me115/archive/2010/10/15/1852432.html...转载 2019-06-12 23:31:21 · 456 阅读 · 0 评论 -
GrabCut与BorderMatting的C++实现
本实验实现了论文《“GrabCut” — Interactive Foreground Extraction using Iterated Graph Cuts》中的图像分割功能,利用迭代的graph cuts进行交互式的前景提取,是对静态图像高效的、交互的前景或背景分割,对图像编辑具有重大的现实意义。通过在想要提取的物体外围拉出一个包围物体的矩形框,就可以对图像实现较好的分割,提取出我们像要...原创 2019-06-12 11:34:20 · 3001 阅读 · 4 评论 -
C++中const的作用以及其与#define的对比
const主要可以用于修饰类的成员变量,修饰类的成员函数,修饰函数的传入参数以及修饰函数的返回值当const修饰类的成员变量的时候,代表这是一个常量,不可以被修改,例如:private const int index = 1;const类型的常量必须在初始化时进行赋值当const修饰类的成员函数的时候说明这个函数不会修改类中的数据成员,不会调用其他的非const成员函数,例如:...原创 2019-06-26 01:09:19 · 131 阅读 · 0 评论 -
Visual Studio Installer界面闪退问题解决
在我安装Visual Stdio的时候遇到了一个问题,就是下载了Visual Stdio Installer之后不会出现选择下载模块的界面,而是直接闪退出去。经过探索之后找到了解决办法。首先找到路径C:\Program Files (x86)\Microsoft Visual Studio\Installer在其中找到vs_installer.exe,右击选择兼容性疑难解答:点击启动程...原创 2019-07-10 11:12:30 · 9204 阅读 · 3 评论 -
使用Swig转C++为Python详解
Swig是一个可以使得不同语言之间可以相互调用的工具,今天记录一下使用Swig将C++转为Python的方法。首先从官网下载Swig,官网网址www.swig.org,下载后解压压缩包,并将swig.exe的路径添加到环境变量path中,就可以使用swig了。下面我们来准备C++代码。创建一个空项目,并创建.h文件与.cpp文件,编写代码:#pragma once#include...原创 2019-07-14 21:18:24 · 2801 阅读 · 1 评论 -
C++中类的大小
在C++中,使用sizeof来判断一个类的大小是一类常考的提醒,今天在这里进行一下记录。如果定义一个空的类,类中没有任何的成员变量和成员函数,则如果对该类型进行sizeof,结果是1,因为虽然空类型的实例中不包含任何的信息,本来大小应该是0,但是我们在声明该实例的时候,它必须在内存中占有一定的空间,否则我们是无法使用和访问这些实例的,而这个实例会占多大的空间则是由编译器决定,一般为1字节。...原创 2019-07-05 22:40:56 · 226 阅读 · 0 评论 -
C++中拷贝构造函数的定义传参问题
在C++中,我们使用拷贝构造函数来实现对象的复制。我们需要注意的是,在定义拷贝构造函数的时候,传入参数不能是传值参数,例如A(A other)。因为如果是传值函数,就会在拷贝构造函数内将形参复制为实参,而复制的时候又会调用拷贝构造函数,这样就会造成无休止的递归调用导致栈溢出,因此C++不允许拷贝构造函数传递值参数,最好将拷贝构造函数修改为传递常量引用。例如:#include<ios...原创 2019-07-05 22:58:22 · 864 阅读 · 0 评论 -
C++中的operator=运算符重载
在编程时对赋值运算符的重载是有时需要进行考虑的部分,今天在这里对这一部分的内容进行一下记录。首先是MyString类的定义部分:#include<iostream>using namespace std;class MyString{private: char* m_pData;public: MyString(const char* pData = nul...原创 2019-07-06 00:53:41 · 4571 阅读 · 1 评论 -
C++与C#中结构体和类的区别
类与结构体在C++与C#中都是可以使用的,但是两者在两种语言中的区别却很大,今天在这里进行一下记录。在C++中,类与结构体的唯一区别就是默认访问权限的区别。在struct中,默认的访问权限为public,而在类中,默认的访问权限为private。在C#中,默认权限不再是两者的区别,其默认访问权限均为private的。区别在于,struct在C#中是值类型,值类型在栈上分配内存,而class...原创 2019-07-06 13:41:03 · 1401 阅读 · 0 评论 -
C++与C#中字符串的区别
string类在C++与C#中都是一种经常使用的类型,对字符串的操作比对字符数组的操作方便很多,今天在这里记录一下C++和C#中的string的区别与注意事项。在C++中,string的每一个字符串的结尾都是字符'\0',因此字符串的占用的内存比表面上使用的字节数多一。在C++中需要注意的是,C++将const字符串保存在常量存储区,当多个指针指向同一个const字符串时,者几个指针指向的内存...原创 2019-07-06 22:12:39 · 1880 阅读 · 1 评论 -
C++如何判断一个数的二进制中1的个数
在面试和笔试中这是一种常见的题型,主要有三种方法进行实现:1. 右位移右位移的过程就是不断地将二进制数的最低位丢弃,然后最高位用1代替的过程。右位移的基本思路为:先将要判断的数转换为正整数,然后不断地进行右位移,并将最后一位与1进行与运算,如果最后一位为1则与运算结果为1,就可以判断得到二进制中的一个i,直到二进制中所有的数都右移被丢弃,得到0循环结束。int CountOneF...原创 2019-05-21 15:45:51 · 3813 阅读 · 0 评论