
C/C++
文章平均质量分 59
ljh0302
软件研发工程师
后端Java,前端Angular
展开
-
谭浩强《C++程序设计》学习篇———虚函数
谭浩强《C++程序设计》学习篇———虚函数一、定义定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。语法:virtual 函数返回类型函数名(参数表) { 函数体 } 用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数 虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。定义为virt原创 2015-07-28 10:52:00 · 783 阅读 · 0 评论 -
string 与char* char[]之间的转换
原文地址:http://www.aichengxu.com/view/485681、首先必须了解,string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。注意,与char*不同的是,string不一定以NULL('\0')结束。s转载 2016-01-11 17:16:21 · 1246 阅读 · 0 评论 -
error:LNK2005 已经在*.obj中定义
实习项目中涉及到静态库的编写,在用实例调试静态库的时候,遇到LNK2005重复定义错误:已经在“*.obj”中定义。上网搜了一下,总结有如下几种情况:1、重复定义全局变量全局变量是针对整个工程的,在一个CPP文件的定义:int nCount;那么在使用的CPP文件中就应该使用extern int nCount即可,如果还是使用int nCount 就会产生LNK2005错误;根据C原创 2016-01-15 14:23:20 · 15330 阅读 · 0 评论 -
Java与C之间的socket通信
原文地址:http://blog.youkuaiyun.com/yutianzuijin/article/details/24807417最近正在开发一个基于指纹的音乐检索应用,算法部分已经完成,所以尝试做一个Android App。Android与服务器通信通常采用HTTP通信方式和Socket通信方式。由于对web服务器编程了解较少,而且后台服务器已经采用原始socket实现与c客户端通信,这就要转载 2016-03-28 10:07:44 · 871 阅读 · 0 评论 -
Linux下C程序的编辑,编译和运行以及调试
转载地址:http://www.cnblogs.com/AloneSword/p/3512797.htmlLinux下C程序的编辑、编译和运行以及调试要使用的工具:编辑:vim(vi)编辑和运行:gcc调试:gdb安装和简单(以下是以在ubuntu中安装为例)sudo apt-get install vim gcc gdb1.使用vim编辑源文件vim he转载 2017-03-03 19:58:38 · 1113 阅读 · 0 评论 -
[Leetcode]-15 3Sum
转载地址:https://www.cnblogs.com/grandyang/p/4481576.htmlGiven an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives转载 2018-01-14 13:41:33 · 220 阅读 · 0 评论 -
[Leetcode]-14 Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.思路:利用递归来实现代码:class Solution {public: string longestCommonPrefix(vector& strs){ if(strs.size() =原创 2018-01-14 13:43:51 · 200 阅读 · 0 评论 -
[Leetcode]-13 Roman to Integer
Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.思路:从千位到个位依次进行字符串匹配,记录对应十进制每位上的数值。(每次匹配成功后,更新原字符串为剩余的子串)代码:class Solution {pub原创 2018-01-14 13:49:30 · 190 阅读 · 0 评论 -
[Leetcode]-12 Integer to Roman
Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.思路:首先列出罗马数字4000以内的所有整点匹配串(3000-1000,900-100,90-10,9-1)代码:class Solution {public:原创 2018-01-14 13:53:14 · 229 阅读 · 0 评论 -
【转载】leetcode 53. Maximum Subarray(DP动态规划问题)
问题描述: Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1,2,1] ...转载 2018-05-17 11:30:45 · 185 阅读 · 0 评论 -
[Leetcode]-64 Minimum Path Sum
刚开始思考用递归来解决该问题:class Solution {public: int minSum(vector<vector<int> > &grid, int m, int n,int i, int j){ if(i == m && j == n){ return grid[i][j]; }else if(i == m){ ...原创 2018-05-07 16:40:22 · 113 阅读 · 0 评论 -
剑指Offer-二维数组的查找
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数刚看到这道题目的时候,觉得和leetcode中一道数组查找题目很像,可是又有点区别,下面顺便给出leetcode中的描述:每一行都按照从左到右递增的顺序排序,每一行开头第一列的第一个数大于等于前一行最后一列的数字。下面给出该题...原创 2018-05-25 14:46:57 · 193 阅读 · 0 评论 -
[Leetcode]-56 Merge Intervals
在解决这个问题的时候,我的思路是: Interval的形式为(start,end)1)按照Interval的第一个数值start进行排序,得到排序后数组2)现在对排序后的数组进行合并操作,我们想象有一条直线,所有的间隔都是线段考虑一个间隔I1=(s1,e1)和它的后一个间隔I2=(s2,e2),因为已经排好序,所以s1<s2当e1 < s2的时候,I1与I2不重合,根据有序性可知I2之...原创 2018-05-22 16:29:33 · 137 阅读 · 0 评论 -
剑指Offer-树的子结构
这道题题目的思路总结:1)二叉树B当前节点值等于二叉树A当时节点值,则递归地去匹配B的左子树和A的左子树,B的右子树和A的右子树2)二叉树B当前节点值不等于二叉树A当时节点值,则考虑B是否是A的左子树的子结构,或者B是A的右子树的子结构开始的时候我试图用一个函数的递归解决这个问题,但是我发现,空树不是任何子树的子结构,所以终止条件有些问题,下面的文章用了两个函数,就很好的解决了这个问题。下面转自h...转载 2018-05-29 14:46:04 · 163 阅读 · 0 评论 -
windows下C的定时器timeSetEvent使用
转自http://www.cnblogs.com/lancidie/archive/2011/04/06/2006729.htmlMSDN里定义的函数原型如下:MMRESULT timeSetEvent( UINT uDelay , UINT uResolution ,转载 2015-12-07 17:54:44 · 5056 阅读 · 0 评论 -
C++类中定义线程
1. C++ 中如何定义线程函数 有两种方法:a. 定义线程函数为全局函数 b. 定义线程函数为类的静态成员函数2. C++中的线程函数如何访问类中的成员变量 针对线程函数为类的静态成员进行说明。如果是静态数据成员,当然可以直接访问,但是如果要访问非静态数据成员,直接访问是做不到的。如果要想在线程函数中访问和操作类的非静态成员变量,可以把线程函数作为一个转载 2015-12-07 17:51:57 · 927 阅读 · 0 评论 -
ZIP压缩算法详细分析及解压实例解释
原文地址:http://www.cnblogs.com/esingchan/p/3958962.html最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据压缩,两者本质上没啥区别,在数学家看来,都是映射。一方面在进行通信的时候,有必要将待转载 2015-12-22 17:57:40 · 1650 阅读 · 1 评论 -
C/C++中的void 和 void *
C/C++中的void 和 void *void的含义、作用void 即“空类型”,不表示“任意类型”。void 的作用 1)对函数返回的限定:函数不需要返回值2)对函数参数的限定,函数不允许接受参数无论在C还是C++中,若函数不接受任何参数,一定要指明参数为void在C语言中,凡是不加返回值类型限定的函数,就会被编译器作为返回整型值处理,而不是没有返回值。在C++中,原创 2015-07-28 09:29:44 · 669 阅读 · 0 评论 -
C++中指针使用小结
1、声明指针typeName * pointerName;2、给指针赋值对变量名用&运算符,来获得被命名的内存的地址,new运算符返回未命名的内存的地址。3、对指针解除引用对指针应用解除引用或间接运算符(*)来解除医用4、数组名数组名被视为数组第一个元素的地址,但是数组名为常量,不能修改它的值。5、数组的staticbinding & dynamic bindi原创 2015-08-24 15:11:34 · 407 阅读 · 0 评论 -
C++中函数指针的使用
函数的地址是存储其机器语言代码的内存的开始地址。1、获取函数的地址直接使用函数名(不跟参数)即可。2、声明函数指针返回类型 (*pf) (参数列表)函数原型: double pam(int);指针类型: double (*pf)(int)3、使用函数指针来调用被指向的函数pf =pam;以下两种格式都可以(C++都允许):double x= pf(5);原创 2015-08-25 09:33:59 · 634 阅读 · 0 评论 -
C++中函数模板的使用
一、概念和定义函数模板使用泛型来定义函数,其中的泛型可用具体的类型(如int 和double替换)。通过将类型作为参数传递给模板,可以使编译器生成该类型的函数。template void Swap(T &a, T &b){ T temp; temp = a; a = b; b = temp; }如果需要多个将同一个算法用于不同类型的函数,一般使用函数模板。注意:函数原创 2015-08-28 11:20:28 · 519 阅读 · 0 评论 -
C++中#ifndef#define#endif的用法
定义 #ifndef x #define x ... #endif 这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的一种----条件编译。 C语言在对程序进行编译时,会先根据预处理命令进行“预处理”。C语言编译系统包括预处理,编译和链接等部分。转载 2015-08-28 16:49:30 · 769 阅读 · 1 评论 -
C++中#include <> 与#include ""的区别
1、采用方式包含头文件表示让编译器在编译器的预设标准路径去搜索相应的头文件比如:VS2010中使用#include 所以向标准的头文件 iostream用这个方法,#include 2、采用“ ”方式包含的头文件现在工程所在路径中搜索,如果未找到,再到系统标准路径下搜索 所以向用户自定义的头文件只能用" "的方式,#include "func.h"原创 2015-08-31 11:27:52 · 528 阅读 · 0 评论 -
C++中cin,cout,以及返回值
转自:http://blog.youkuaiyun.com/kongbai308416350/article/details/4470914 今天在看c++primer的时候,读到其中这样一段话:When we use an istream as a condition, the effect is to test the state of the stream. If the stream转载 2015-08-31 20:58:40 · 4894 阅读 · 0 评论 -
BOOL 和 bool 的区别
1、类型不同 BOOL为int型 bool为布尔型 2、长度不同 bool只有一个字节 BOOL长度视实际环境来定,一般可认为是4个字节 3、取值不同 bool取值false和true,是0和1的区别 BOOL取值FALSE和TRUE,是0和非0的区别 bool是标准C++数据类型,可取值true和falseBOOL是微软定义的typedef int转载 2015-08-06 11:51:08 · 589 阅读 · 0 评论 -
C++类中特殊成员函数总结
C++中自动提供的成员函数:●默认构造函数,如果没有定义构造函数●默认析构函数,如果没有定义●复制构造函数,如果没有定义●赋值运算符,如果没有定义●地址运算符,如果没有定义1、默认构造函数如果没有提供任何构造函数,C++将创建默认构造函数。如果定义了构造函数,C++将不会定义默认构造函数,可以显示定义默认构造函数,这种构造函数没有任何参数,但可以使用它来设置特定的值原创 2015-09-01 11:42:38 · 1688 阅读 · 0 评论 -
MFC双缓冲
绘图的过程放在OnDraw或者OnPaint函数中,OnPaint在进行屏幕显示时调用OnDraw。作图时发生闪烁的原因:当窗口需要重绘时,首先用背景色清除显示区,然后调用OnPaint,短时间内背景色与显示图像交替出现,使得显示窗口看起来在闪烁。将背景刷设置为NULL,重绘图形不会闪烁,但是窗口的显示会混乱。解决方案:MFC双缓冲:把要显示的图形先在内存中绘制好,然后再一次性的将内存中的图形按照原创 2015-09-09 16:50:24 · 534 阅读 · 0 评论 -
Heap corruption detected error
写程序的时候发现一个错误,运行时报错: void CConfigureDlg::ShowData(DWORD Data,int sel){ CString Read_data; TCHAR * szBuf = new TCHAR[10]; DwordToHexString(Data,szBuf); Read_data.Format(_T("%s"),szBuf); switch原创 2015-09-06 18:39:41 · 519 阅读 · 0 评论 -
C++中cin、cin.get()、cin.getline()、getline()
原文:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)1、cin 2、cin.get() 3、cin.getline()转载 2015-09-07 15:41:23 · 476 阅读 · 0 评论 -
VC中_T("")和L的区别
转载地址:http://blog.youkuaiyun.com/zyw_anquan/article/details/8556418区别解释一说这个话题,肯定涉及MS的字符集,先看MS对_T(其中_TEXT(")与_T("")一样)的定义:[cpp] view plaincopyprint?#define _T(x) __T(x) #define转载 2015-11-02 16:44:56 · 602 阅读 · 0 评论 -
常见C++笔试面试题整理
1、C和C++的区别1)C是面向过程的语言,是一个结构化的语言,考虑如何通过一个过程对输入进行处理得到输出;C++是面向对象的语言,主要特征是“封装、继承和多态”。封装隐藏了实现细节,使得代码模块化;派生类可以继承父类的数据和方法,扩展了已经存在的模块,实现了代码重用;多态则是“一个接口,多种实现”,通过派生类重写父类的虚函数,实现了接口的重用。2)C和C++动态管理内存的方法不一样,C是...原创 2018-07-19 16:39:23 · 104665 阅读 · 10 评论