C++
文章平均质量分 62
Edward_Wong
我们来做朋友吧!
展开
-
poj3984迷宫问题 广搜+最短路径
定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。Input一转载 2014-10-10 11:15:50 · 1328 阅读 · 0 评论 -
不用‘+’实现加法运算
#include using namespace std;int AddWithoutOperator(int num_1, int num_2) { if(num_2 == 0) { return num_1; } int sum = num_1 ^ num_2; int carry = (num_1 & num_2) << 1; r原创 2014-10-03 18:28:33 · 486 阅读 · 0 评论 -
C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
1、cin 2、cin.get() 3、cin.getline() 4、getline() 5、gets() 6、getchar()附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符1、cin>> 用法1:最基本,也是最常用的用法,输入一个数字:#include using n转载 2014-10-11 10:49:43 · 530 阅读 · 0 评论 -
回文字符串整理
定义两个指针,从两头开始同时向中间扫描字串:转载 2014-10-12 15:36:24 · 577 阅读 · 0 评论 -
导致内存泄漏的原因
内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了内存泄漏可以分为4类: 1. 常发性转载 2014-10-28 16:11:34 · 1713 阅读 · 0 评论 -
二叉树--前序序列和中序序列重构二叉树
struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};BinaryTreeNode* Construct(int* preorder, int* inorder, int length) { if(preorder == NULL转载 2014-10-01 20:58:25 · 578 阅读 · 0 评论 -
C random C ++rand函数应用
random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。但在C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数。 可改用C++下的rand函数来实现。rand()%n 范围 0~n-1rand()主要是实现 产生随机数,其他我们在这里可以无视他显然任意 一个数 rand()%n 范围显然是 0~n转载 2014-10-27 14:19:45 · 1040 阅读 · 0 评论 -
C++ 类的嵌套
在一个类中定义的类称为嵌套类,定义嵌套类的类称为外围类。定义嵌套类的目的在于隐藏类名,减少全局的标识符,从而限制用户能否使用该类建立对象。这样可以提高类的抽象能力,并且强调了两个类(外围类和嵌套类)之间的主从关系。下面是一个嵌套类的例子:原创 2014-10-01 11:14:07 · 1538 阅读 · 0 评论 -
C++之运算符重载(2)
上一节主要讲解了C++里运算符重载函数,在看了单目运算符(++)重载的示例后,也许有些朋友会问这样的问题。++自增运算符在C或C++中既可以放在操作数之前,也可以放在操作数之后,但是前置和后置的作用又是完全不同的(q前置运算符:先加1,再赋值;后置运算符:先赋值,再加1)。那么要怎么重载它们,才可以有效的区分开来呢?今天我就来说说C++中是怎么处理前置运算符和后置运算符的重载的。以及介绍一下插入运转载 2014-10-01 10:35:46 · 448 阅读 · 0 评论 -
深入分析C++中char * 和char []的区别
问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++代码运行结果2293628 4199056 abc2293624 2293624 abc2293620 4199056 abc#include using转载 2014-10-13 11:35:55 · 517 阅读 · 0 评论 -
大数加法的字符串实现
#include#include #include using namespace std;char s1[200],s2[200],sum[210];void add(){ int lena=strlen(s1); int lenb=strlen(s2); int maxlen=(lena<lenb)?lenb:lena; int carry=0转载 2014-10-13 10:01:32 · 868 阅读 · 0 评论 -
【C++】typedef与define的思考
typedef 一,定义 typedef:声明自定义数据类型,配合各种原有数据类型,用来简化编程。 二,用途 1,便于移植 typedef int INT32; INT32 a;//定义整型变量转载 2014-10-14 13:55:17 · 801 阅读 · 0 评论 -
C++ 快速排序
void swap(int& a, int& b) {// a = a ^ b; //这个为什么不行?如果是这样:swap(a[0],a[0])的话,a和b都为a[0],两个直接都等于0// b = a ^ b;// a = a ^ b; int temp = a; a = b; b = temp;}一、动态判原创 2014-10-02 17:05:36 · 649 阅读 · 0 评论 -
插入排序
//从前向后查找的插入排序转载 2014-10-04 10:16:11 · 497 阅读 · 0 评论 -
C++ 字符串库函数整理
#include #include #include #include using namespace std;void PrintStr(const char* str) { cout<<str<<endl;}//将字符串翻转void PrintRevStr(char* str) { cout<<strrev(str)<<endl;}int main()原创 2014-10-13 11:38:02 · 1098 阅读 · 0 评论 -
C++ 类构造函数初始化顺序
#include using namespace std;class OBJ1{public: OBJ1(){ cout <<"OBJ1\n"; }};class OBJ2{public: OBJ2(){ cout <<"OBJ2\n"; }};class Base1{public: Base1(){ cout <<"Base1\n"; }原创 2014-11-01 00:13:21 · 653 阅读 · 0 评论 -
C++ 字符串排序
#include #include #include #include using namespace std;bool less_lower(const char& it1, const char& it2) { return (it1) < (it2);}int main() { char str[] = "sadfsdfsfasdfsdfwefwef";原创 2014-10-16 09:41:45 · 2738 阅读 · 0 评论 -
C++ sort与qsort的比较
qsort:快速排序sort:快速排序的优化版而且原创 2014-10-04 17:14:31 · 690 阅读 · 0 评论 -
并查集-判断无向图是否存在环
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集合。Union:将两个子集合并成同一个集合。代码:转载 2014-10-04 14:37:14 · 1375 阅读 · 0 评论 -
C++之运算符重载(1)
在前一节中曾提到过,C++中运行时的多态性主要是通过虚函数来实现的,而编译时的多态性是由函数重载和运算符重载来实现的。这一系列我将主要讲解C++中有关运算符重载方面的内容。在每一个系列讲解之前,都会有它的一些基础知识需要我们去理解。而运算符重载的基础就是运算符重载函数。所以今天主要讲的是运算符重载函数。 1.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用域不同类型的数据导致不转载 2014-10-01 10:32:43 · 579 阅读 · 0 评论 -
IP地址的存储形式
#include using namespace std;int main() { unsigned int ip = 0x1f4e2342; unsigned char* result = (unsigned char*)(&ip); printf("%d.%d.%d.%d",result[3], result[2], result[1],result[0]);}原创 2014-10-27 20:01:30 · 780 阅读 · 0 评论 -
哈希表
a) 定义hash表和基本数据节点原创 2014-09-26 21:08:22 · 677 阅读 · 0 评论 -
线性表
#include #include using namespace std;class ListNode{public: char data; ListNode *link; ListNode(){link = NULL;} ListNode(char &item,ListNode *next = NULL){data = item; link = next;}};cla原创 2014-09-02 08:39:38 · 467 阅读 · 0 评论 -
C++ 二分查找
#include using namespace std;int BinarySearch(int a[], int length, int value) { if(a == NULL || length <= 0) return -1; int st = 0; int end = length - 1; while(st <= end) { int mid =原创 2014-10-05 21:28:11 · 553 阅读 · 0 评论 -
面向对象(oop)与面向过程(opp)的区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 例如五子棋,面向过程的设计思路就是首先分析问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判定输赢, 5、转载 2014-09-24 23:50:09 · 16299 阅读 · 0 评论 -
指向类的成员的指针
指向类的成员的指针 在C++中,可以说明指向类的数据成员和成员函数的指针。 指向数据成员的指针格式如下: ::* 指向成员函数的指针格式如下: (::*)() 例如,设有如下一个类A: class A { public: int fun (int b) { ret转载 2014-08-31 23:31:05 · 492 阅读 · 0 评论 -
类型转换函数
类型转换函数的作用是将一个类的对象转换成另一类型的数据.例如,如果已声明了一个Complex类,可以在Complex类中这样定义类型转换函数 :operator double(){return m_dReal;}函数返回double型变量m_dReal的值. 它的作用是将一个Complex类对象转换为一个double型数据,其值是Complex类中的数据成员转载 2014-09-01 14:06:06 · 657 阅读 · 0 评论 -
拷贝构造函数的陷阱
这个知识点是在《剑指offer 名企面试官精讲典型编程题》上看的,感觉原创 2014-08-30 11:40:54 · 583 阅读 · 0 评论 -
[C++]pair<int,int>与make_pair<int,int>
我们知道map和multimap的作用,这两种数据类型在存储数据时,会根据pair#include#includeusing namespace std;int main(){ vector >VP; VP.push_back(make_pair(10,50)); VP.push_back(make_pair(原创 2014-09-22 19:25:49 · 5874 阅读 · 0 评论 -
二叉树中和为某一值的路径
#include using namespace std;struct TreeNode { int value; TreeNode* left; TreeNode* right;};TreeNode* createNode(int value) { TreeNode* node = new TreeNode; node -> value = v原创 2014-10-03 21:52:26 · 545 阅读 · 0 评论 -
二叉树的前序,中序,后序遍历 递归实现
前序遍历:#include using namespace std;struct TreeNode { int value; TreeNode* left; TreeNode* right;};TreeNode* createNode(int value) { TreeNode* node = new TreeNode; node -> va原创 2014-10-06 09:47:28 · 624 阅读 · 0 评论 -
二叉树 前序,中序,后序遍历 --非递归遍历
前序遍历:#include #include using namespace std;struct TreeNode { int value; TreeNode* left; TreeNode* right;};TreeNode* createNode(int value) { TreeNode* node = new TreeNode;转载 2014-10-06 10:03:33 · 540 阅读 · 0 评论 -
C/C++中各种类型int、long、double、char表示范围(最大最小值)
#include#include#include using namespace std;int main(){ cout << "type: \t\t" << "************size**************"<< endl; cout << "bool: \t\t" << "所占字节数:" << sizeof(bool); cout ::max转载 2014-10-27 16:18:58 · 832 阅读 · 0 评论 -
C++ static、const和static const 以及它们的初始化
const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。 static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。 在C++中,sta转载 2014-09-30 16:53:05 · 603 阅读 · 0 评论 -
static的作用
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable转载 2014-09-30 16:48:40 · 458 阅读 · 0 评论 -
最小生成树Prim算法
一个连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边。所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接起来,并且使得权值的和最小。综合以上两个概念,我们可以得出:构造连通网的最小代价生成树,即最小生成树转载 2014-10-09 00:33:47 · 664 阅读 · 0 评论 -
图的dfs与bfs(深搜广搜)c++实现
#include #include #include #include #include using namespace std;int n;vector > graph;bool visited[100] = {0};void dfs(int v){ list::iterator it; visited[v] = true; printf("%5d",转载 2014-10-08 23:45:45 · 3178 阅读 · 0 评论 -
比较两棵二叉树是否相同
#include using namespace std;struct Node{ int data; Node* left; Node* right;};bool compare_tree(Node* root_1, Node* root_2) { if(root_1 == NULL&&root_2 == NULL) return true;原创 2014-09-29 18:08:34 · 709 阅读 · 0 评论 -
C++多态性
之前一直都多态理解地不是很到位,特别是抽象类和接口这两个模块,今天特地写了blog转载 2014-08-30 11:27:23 · 416 阅读 · 0 评论 -
C++ 堆排序
1 堆 1.1 简介n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):(1)ki=号。//k(i)相当于二叉树的非叶结点,K(2i)则是左孩子,k(2i+1)是右孩子若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于转载 2014-10-07 12:52:44 · 559 阅读 · 0 评论