
C++编程心得
文章平均质量分 51
白衣摇橹
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++一些数字的求法
1. 如何分解质因数,将一个数字的所有质因数都排列出来,如180,2 2 3 3 5void pailieyinshu(long num)//将一个long的整数,分解成所有的质因数排列{ int i = 0; int k = 0; for (i = 2; i <= num; i++) { if ( num%i == 0) { num = num / i; cou原创 2016-03-16 22:35:09 · 422 阅读 · 0 评论 -
C++静态
C++中的静态,两个概念静态数据成员和静态成员函数。静态数据成员依赖于类,而不依赖于对象,也就是说即使不实例化对象,但作为一个静态数据成员,在内存中也存在,普通的数据成员不实例化就不存在。如以下例子class Tank{public: Tank(){ s_iCount++; }//产生新坦克,则坦克数增多 ~Tank(){ s_iCount--; } static int getCo原创 2016-03-14 15:40:54 · 311 阅读 · 0 评论 -
C++友元函数和类
一般函数分为全局函数,和类中的成员函数,相对,有友元全局函数和友元成员函数。下面就是一个在类中的友元函数,一定要传入当前类的一个对象或引用或者本身,就是能访问到私有或保护成员。class Coordinate{ friend void printXY(Coordinate &c);public: Coordinate(int x, int y);private: int m_原创 2016-03-14 15:12:17 · 320 阅读 · 0 评论 -
vector中的元素删除
在vector中用迭代器删除元素会用到erase()函数。这个函数返回的是删除当前元素后下一个元素的指针,也就是说在删除元素后,指针指向删除元素后面的那个,具体用法参考下面代码。vector::iterator itIn = inliers.begin(); vector::iterator itM = matches.begin(); for (itIn = inliers.begin原创 2016-04-06 15:50:01 · 696 阅读 · 0 评论 -
高效的斐波那契数列实现
一般斐波那契数列在教科书中都是以递归的形式登场的,所以一般有常规思维是用递归解决。long long Fibonacci(unsigned int n)//递归实现{ if (n <= 0) return 0; if (1 == n) return 1; return Fibonacci(n - 1, n - 2);}但递归的效率实际是很低的,在计算数列中,有大量原创 2016-03-12 14:17:56 · 1280 阅读 · 0 评论 -
C++两个有序数组合并
源自剑指offer中的思考题,有序数组A、B,A有足够空间容纳B,将A,B按顺序排列。思路:也是用两个指针从尾部开始进行依次比较,较大的放在新数组的后边,然后指针依次转移。1. la,lb分别指向A和B的尾部,index指向融合数组的尾部2.然后比较,大的放在index出,index向前移动一位,然后大的la或者lb向前移动一位#includeusing names原创 2016-03-11 18:35:10 · 9506 阅读 · 2 评论 -
二维有序数组中查找
假设有一个二维数组,用右边大于左边的元素,下边大于上边的元素来储存,那么如何能快速查到目标值key。算法原则如下:从右上角的数开始,因为右上角的数,大于左边的所有数字,小于下边的所有数字。执行下面三个操作:1. 若与查找的一样,则找到;2. 若大于查找的数字,则整个列都可以排除;3. 若小于查找的数,那么整个行都可以排除。代码如下:bool FindK(in原创 2016-03-11 16:01:12 · 486 阅读 · 0 评论 -
C指针的一些注意点
指针离储存的就是内存的一块地址。指针的内容分为指针的类型,指针所指向的类型,指针的值,指针所指向的内存区。1. 指针的类型指的是指针本身所具有的类型,去掉字符就是了。int *ptr; //指针的类型是int * char *ptr; //指针的类型是char * int **ptr; //指针的类型是 int ** int (*ptr)[3]; //指针的类型是 int(转载 2016-03-11 13:17:05 · 288 阅读 · 0 评论 -
const与sizeof
Q: const的用途在C中,const的用法有定义常量,修饰函数参数,修饰函数返回值。在C++中,const还可以修饰函数的定义体,定义类中某个成员函数为恒态函数,即不改变类中的数据成员。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。Q: const和#define都能定义常量,但用const优点更多。(1)const常量有数据类型,宏常量没有数据原创 2016-03-09 23:40:36 · 1253 阅读 · 0 评论 -
C++的异常处理
异常就是程序运行期出现的错误,一般是不期望的,异常处理就是对预期的错误进行预见性的安排。常用的有两个关键字:try 尝试运行正确的逻辑... catch 捕获异常... throw 抛出异常主逻辑放在try块里,异常处理逻辑放在catch里。就是主逻辑和异常处理进行分离。char getChar(const string& aStr, const int aIndex){原创 2016-03-09 21:30:37 · 233 阅读 · 0 评论 -
C++多态
多态,简单来说,就是当发出一条命令时,不同的对象接收到同样的命令时,所做出的动作是不同的,成为多态。是面向对象的三大特征之一:封装,多态和继承。教科书定义:指相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。实际就是静态多态和动态多态。静态多态,也叫作早绑定,如下代码,两个一样函数名,但是参数不同,在调用时,程序会根据传参数不同调用不同函数。因为程序很早就把这种情况编译进去,这种原创 2016-03-09 20:59:32 · 328 阅读 · 0 评论 -
C++继承
在定义对象时,可以发现很多对象都是有联系的,如以下的两个类,worker中的一些成员也是person的成员,应对这种情况,减轻程序员的工作量,C++设计了继承。class Person{public: void eat(); string m_strName; int m_iAge;};class Worker{public: void eat(); void work原创 2016-03-09 01:35:48 · 430 阅读 · 0 评论 -
C++模板
模板就是把类型也作为参数。假设有一个函数如下。int max(int a, int b){ return (a > b) ? a; b; }char max(char a, char b){ return (a > b) ? a; b; }两个函数逻辑结构完全一样,就是数据结构不一样,要实现只编写一个函数就完成所有这些函数,要用到模板。关键字:template typename原创 2016-03-15 13:51:50 · 330 阅读 · 0 评论 -
C++封装学习(二)
对象数组的实例。class Coordinate{public: int m_iX; int m_iY;};int main(){ Coordinate coord[3];//栈中实例化 coord[1].m_iX = 10; Coordinate *p = new Coordinate[3];//堆中实例化 p[0].m_iY = 20; p->m_iY = 20原创 2016-03-07 22:08:47 · 387 阅读 · 0 评论 -
二叉树的C++指针实现
二叉树的C++用指针实现,均有递归算法实现,能够实现以下功能。1. 输入数字建立一个二叉树,输入-1表示为空节点。2.前中后序遍历(中左右,左中右,左右中)。3.计算二叉树节点的数量。4.计算二叉树的深度。5.二叉树插入数据,可以用作排序,小的放在节点左边,大的放在节点右边。#includeusing namespace std;//二叉树的指针实现struct原创 2016-03-07 21:12:33 · 655 阅读 · 0 评论 -
C/C++中字符串问题汇总
C/C++中的字符串一般末尾都有默认的”0\“,所以一般都是n+1个开销,容易造成越界。 char str[10]; strcpy(str, "0123456789");//报错,因为str至少要11才能复制运行下面的程序,结果是什么? char str1[] = "hello"; char str2[] = "hello"; if (str1 == str2) cout原创 2016-03-12 22:15:00 · 868 阅读 · 0 评论 -
两个有序数组相融合
#includeusing namespace std;//两个有序数组进行排序,A有足够的空间容纳B,把和A融入到一起void MergeArr(int a[], int b[], int la, int lb)//输入A和B的数组和两个长度{ if (la <= 0 || lb <= 0) return; int index=la+lb-1; int ida = la原创 2016-03-15 15:32:49 · 423 阅读 · 0 评论