
C/C++
菜鸟502
我只是一个菜鸟!
展开
-
声明和定义的区别(C++)
声明和定义的区别(C++) 转自:http://blog.youkuaiyun.com/sjxbf/article/details/6310150①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。②变量声明:用于向程序表明变量的类型和名字。③定义也是声明:当定义变量时我们声明了它的类型和名字。④extern关键字:通过使用extern关键字声明转载 2015-12-30 22:52:16 · 564 阅读 · 0 评论 -
常用算法——模式匹配(KMP)
在一个字符串中查找一个子字符串有很多方法,最简单容易想到的算法便穷举,但这样的情况下算法复杂度为O(m * n)。 而KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。 KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符,当然它描述的也是子串的对称原创 2016-08-04 16:04:27 · 716 阅读 · 0 评论 -
动态多态入门示例之虚函数
多态实现一种非常有效的方式就是虚函数,通过基类的指针调用派生类的成员。 不多说了,上代码:#include <iostream>using namespace std;class Bird{public: virtual void fly() { cout << "Bird fly" << endl; }};class Duck : public原创 2016-07-21 15:51:27 · 356 阅读 · 0 评论 -
静态多态入门示例
静态多态通过彼此单独定义但支持共同操作的具体类来描述共同性,也就是说必须存在必需的同名成员函数。 代码示例:#include <iostream>using namespace std;class Car{public: void act() const { cout << "car acting" << endl; }};class Bus{原创 2016-07-21 16:25:51 · 382 阅读 · 0 评论 -
C++并发编程(C++11)
C++11有了std::thread 以后,可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大的提高。C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是<atomic>,<thread>,<mutex>,<condition_variable>和<future>。<atomic>:该头文主要声明了两个类, std::atomic 和 std::atomic_flag,.原创 2016-08-31 14:57:10 · 20894 阅读 · 9 评论 -
138. Copy List with Random Pointer
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.Return a deep copy of the list.Subscribe to see which companies asked原创 2016-09-12 22:53:40 · 343 阅读 · 0 评论 -
求矩阵某位置相邻元素的中间值
描述: 给出一个矩阵,如: 1 2 3 4 5 5 4 3 2 1 3 2 1 4 5 给出一个下标(1,1),其相邻元素有1 2 3 5 3 3 2 1,中间值为(2+3) / 2 = 2 输入: 第一行输入矩阵的行列大小,为m, n 紧接着输入矩阵的所有元素的值 然后输入要求位置的坐标i, j 输出: 中间值 输入示例: 3 5 1 2 3 4 5 5 4 3 2原创 2016-08-25 16:19:43 · 1188 阅读 · 0 评论 -
设计模式(C++实例)
感言 本文很长,但文中近乎有十之八九只能算是我在拜读各位大神大牛们分享的作品的笔记,这里只是我第一遍学习,我知道过了几天我肯定又会把看过的东西给忘记,所以就索性把各位大牛们的东西整理到了一起,方便以后的学习。1.(Strategy策略模式) 一个策略放到一个锦囊里。当用的时候,找到这个锦囊,从锦囊里拿出策略来使用。 注意:锦囊只是简单的装载和调用策略,锦囊里没有逻辑。策略会有更大的自主权,运行原创 2016-08-13 15:40:38 · 13726 阅读 · 0 评论 -
面试题录
1.class A{}; sizeof(A)为什么值为1 这就是实例化的原因(空类同样可以被实例化),每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址,所以空类所占的内存大小是1个字节。 2.overload和overwrite区别 Overload(重载):在C++程序中,可以将语义、功能相似的几个原创 2016-10-09 15:54:57 · 699 阅读 · 0 评论 -
动态规划——LCS
动态规划分为四个步骤: 1.判断问题是否具有最优子结构 这里以LCS为例,X={x1,x2,…,xi};Y={y1,y2,…,yj}。最长公共子序列Z={z1,z2,…,zk}; ①如果xi=yj,那么zk=xi=yj,且Zk-1是序列Xi-1和Yj-1的LCS; ②如果xi≠yj,那么zk≠xi;且Zk是序列Xi-1和Yj的LCS; ③如果xi≠yj,那么zk≠yj;且Zk是序列Xi和Y原创 2016-09-06 21:12:35 · 577 阅读 · 0 评论 -
C/C++文件IO
#include <vector>#include <algorithm>#include <iostream>#include "test.h"using namespace std;typedef struct Sys_Info{ unsigned int vesion; unsigned int sub_version; char info[20];原创 2016-10-06 17:44:21 · 1188 阅读 · 0 评论 -
Linux下编程日记--目录/文件操作及返回命令结果
说明:本代码的作用是: 1.获取指定目录前缀下的当前工作目录所有目录; 2.遍历获取的所有目录,获得目录下的指定后缀名的所有文件名; 3.以dir1/file1.abc, dir1/file2.abc, dir2/fff.abc, dir2/fff.abc…为例, 以目录为单位两两取出调用可执行程度compare进行比对, 并将执行结果使用popen返回; 4.将结果保存到指定文件中去#in原创 2017-03-31 19:38:37 · 759 阅读 · 0 评论 -
函数指针和指针函数
函数指针 函数指针就是指向函数的指针,像普通指针一样,函数指针也指向某种特定的类型,函数类型由其返回类型和形参表确定。 例如:int (*f)(int x);double (*ptr)(double x);因为()运算优先级高于*,所以指针变量外的()必不可少,后面的”形参列表“表示指针变量指向函数所带的参数列表,函数指针和它指向的函数的参数个数和类型必须一致,函数指针的类型和函数的返回值也必原创 2016-07-21 15:07:49 · 354 阅读 · 0 评论 -
数组指针和指针数组
数组指针是一个指针变量,它指向的是一个数组; 比如: int (*p)[2] 其含义是p是指向包含两个元素的数组的指针。 而指针数组是一个包含指针的数组,它的每个元素都是个指针,指向相同类型的不同对象; 比如: char *arr[] = {"abcd", "233333", "teststr"}; 其含义是定义了一个指针数组并对它进行了初始化,arr数组的每个元素都代表着一个字符指针原创 2016-07-21 14:24:34 · 429 阅读 · 1 评论 -
Linux下的socket编程
Linux下的网络编程的含义 linux 网络编程是通过socket(套接字)接口实现,socket是一种文件描述符(可类比文件操作),socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种”打开—读/写—关闭”模式的实现,服务器和客户端各自维护一个”文件”,在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。常见 socket 分类原创 2016-06-28 15:03:22 · 3827 阅读 · 0 评论 -
《The C++ Programming Language》摘抄与总结——关于
声明:文章内容的基本来源于《The C++ Programming Language》,我只是想在把我从书中看到的,了解到的做以记载,同时也算是给博友们做一下分享吧。必须要说明的是这是我有一次从头学习C++的一次经历,有许多东西以前我已经接触过,也有许多内容被我以前给忽略了,甚至也有很多内容我以前闻所未闻,或者知之甚少的。有许多人总是说学习技术要写技术博客,我一直都认为自己的水原创 2015-12-31 22:40:14 · 972 阅读 · 0 评论 -
《The C++ Programming Language》摘抄与总结——类型与声明
在C++的实际编程中,当然我想也不止C++如此,变量的使用需要注意一下内容:让变量保持较小的作用域,“较小”的含义是一个变量的作用域要适当;不要在一个作用域和他外围的作用域采用同样名字,因为如果在不同的作用域使用同样带有含义的变量名称,会降低代码的可阅读性;在一个声明中(只)声明一个名字,即不同的变量(或其他的量)不要在同一处使用类似于int a, b, c这样的声明方式;让常用的和局原创 2015-12-31 23:04:13 · 555 阅读 · 0 评论 -
sqlite基本操作补充
string path = MGBundle::mainBundle()->userFilePathWithFileName("brush_data.db"); sqlite3 *pDB; char *errMsg; if(!Utility::isFileORDirExist(path)) { int res = sqlite3_open(path.原创 2016-01-14 21:59:14 · 630 阅读 · 0 评论 -
友元函数、友元类总结
转载自:http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/04/2535305.html1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函转载 2016-03-17 22:07:40 · 410 阅读 · 0 评论 -
设计模式C++学习笔记之一(Strategy策略模式)
博文很精彩,为方便个人学习特转载,地址:http://www.cnblogs.com/wanggary/archive/2011/04/07/2008796.html无意中,从网上下到一本电子书《24种设计模式介绍与6大设计原则》,很好奇这里有24种设计模式,印象中GOF写的《设计模式》(Design Patterns),好像只有23种吧。运行起来一看,还真挺吸引咱的,里面提到的例子都很有转载 2016-03-17 22:23:56 · 410 阅读 · 0 评论 -
设计模式C++学习笔记之二(Proxy代理模式)
博文很精彩,为方便个人学习特转载,地址:http://www.cnblogs.com/wanggary/archive/2011/04/08/2009965.html代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢。cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。现在贴代码,以方便随用随取。转载 2016-03-17 22:26:27 · 452 阅读 · 0 评论 -
最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
转载自:http://www.cnblogs.com/aiyelinglong/archive/2012/03/26/2418707.html带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法;有向图的最短路径算法有dijkstra算法和floyd算法。 生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成转载 2016-03-21 22:20:48 · 845 阅读 · 0 评论 -
复制构造函数的浅拷贝和深拷贝
C++ 拷贝构造函数分为浅拷贝和深拷贝两种,浅拷贝和深拷贝主要区别就是复制指针时是否重新创建内存空间。如果没有没有创建内存只赋值地址为浅拷贝,创建新内存把值全部拷贝一份就是深拷贝。浅拷贝在类里面有指针成员的情况下只会复制指针的地址,会导致两个成员指针指向同一块内存,这样在要是分别delete释放时就会出现问题,因此需要用深拷贝。 浅拷贝和深拷贝主要区别就是复制指针时是否重新创建内存空间。 如果没原创 2016-07-22 12:40:42 · 717 阅读 · 0 评论 -
C++不确定参数个数函数调用
INTSIZEOF 宏,获取类型占用的空间长度,最小占用长度为int的整数倍:#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )VA_START宏,获取可变参数列表的第一个参数的地址(ap是类型为va_list的指针,v是可变参数最左边的参数):#define va_start(ap,v) (原创 2016-07-22 14:40:49 · 1827 阅读 · 0 评论 -
无向图的邻接矩阵基本操作
无向图的邻接矩阵基本操作原创 2016-07-20 21:21:24 · 8501 阅读 · 0 评论 -
链式存储无向图的基本操作
链式存储无向图的基本操作原创 2016-07-20 21:29:49 · 1436 阅读 · 0 评论 -
OpenCV2.x学习笔记一(图像噪声化与颜色缩减)
噪声对人的影响噪声可以理解为“ 妨碍人们感觉器官对所接收的信源信息理解的因素”。而图像中各种妨碍人们对其信息接受的因素即可称为图像噪声 。噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。因此将图像噪声看成是多维随机过程是合适的,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。原创 2017-07-20 19:31:03 · 576 阅读 · 0 评论