随笔分类 -  c++

摘要:介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据... 阅读全文
posted @ 2016-03-29 22:31 程序员修练之路 阅读(256) 评论(0) 推荐(0) 编辑
摘要:三个函数的申明分别是:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_t numElements, size_t sizeOfElement);都在stdlib.h函数库内它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL malloc用于申请一段新的地址,... 阅读全文
posted @ 2016-03-23 22:06 程序员修练之路 阅读(1088) 评论(0) 推荐(1) 编辑
摘要:vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include vector属于std命名域的,因此需要通过命名限定,如下完成... 阅读全文
posted @ 2016-03-23 22:02 程序员修练之路 阅读(925) 评论(0) 推荐(0) 编辑
摘要:这是一本好书, 可以让你认清自己对C++的掌握程度.看完之后,给自己打分,我对C++了解多少? 答案是不足20分.对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不能完全理解,实力升级了之后回头看) 一般性问题: 1. 不要在注释中重复写代码语义,这样很容易产生不一致. 应该编写的是解释方法和原理的说明性注释. 2. 不要对每个项目每个文件进行强制的排版格式规定, ... 阅读全文
posted @ 2015-11-18 22:18 程序员修练之路 阅读(3403) 评论(1) 推荐(2) 编辑
摘要:《strcpy拷贝越界问题》 一. 程序一 #include #include void main() { char s[]="123456789"; char d[]="123"; strcpy(d,s); printf("d=%s,\ns=%s",d,s); } 执行结果: 解释: 首先要解释一下,char s[]="123456789"; char ... 阅读全文
posted @ 2015-11-03 10:37 程序员修练之路 阅读(544) 评论(0) 推荐(0) 编辑
摘要:在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN) 树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如 JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树, 是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点 的权值乘上其到根结点的 路径长度(若根结点为0层,叶结点到根结点的路径长度 为叶结点的... 阅读全文
posted @ 2015-11-02 21:20 程序员修练之路 阅读(401) 评论(0) 推荐(0) 编辑
摘要:三叉链表存储表示 改进于二叉链表,增加指向父节点的指针,能更好地实现结点间的访问。 存储结构/* 二叉树的三叉链表存储表示 */ typedef struct BiTPNode { TElemType data; struct BiTPNode *parent,*lchild,*rchild; /* 双亲、左右孩子指针 */ }BiTPNode,*BiPTree; 下面给出二叉... 阅读全文
posted @ 2015-10-31 23:11 程序员修练之路 阅读(3278) 评论(0) 推荐(0) 编辑
摘要:我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句: if(假设成立) { 程序正常运行; } else { 报错&&终止程序!(... 阅读全文
posted @ 2015-10-31 22:59 程序员修练之路 阅读(998) 评论(0) 推荐(0) 编辑
摘要:VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常。网上查找了些资料,在这 罗列汇总下,做为备忘~ 一、Debug 和 Release 的区别 Debug 通常称为调试版本,它包含... 阅读全文
posted @ 2015-10-31 22:54 程序员修练之路 阅读(1391) 评论(0) 推荐(0) 编辑
摘要:C语言中*(volatile unsigned int *)0x500的解释: 如下; (unsigned int *)0x500:将地址0x500强制转化为int型指针*(unsigned int *)0x500=0x10:对地址为0x500赋值为0x10 其中volatile关键字有以下用途: (1)用来同步,因为同一个东西可能在不同的存储介质中有多个副本,有些情况下会使得这些副本中的值不同,... 阅读全文
posted @ 2015-10-26 19:48 程序员修练之路 阅读(5747) 评论(0) 推荐(0) 编辑
摘要:1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100。我们怎么才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质不就是一个指针嘛。所以我们可以用下面的方法: int *p = (int *)0x12ff7c; *p = 0x100; 需要注意的是将地址0x12ff7c赋值给指针变量p的时候必须强制转换。 1.1... 阅读全文
posted @ 2015-10-26 19:45 程序员修练之路 阅读(578) 评论(0) 推荐(0) 编辑
摘要:这俩兄弟长得实在太像,以至于经常让人混淆。然而细心领会和甄别就会发现它们大有不同。 前者是指针数组,后者是指向数组的指针。更详细地说。 前: 指针数组;是一个元素全为指针的数组.后: 数组指针;可以直接理解是指针,只是这个指针类型不是int也不是char而是 int [4]类型的数组.(可以结合函数指针一并看看......) int*p[4]------p是一个指针数组,每一个指向一个int型的i... 阅读全文
posted @ 2015-10-26 19:41 程序员修练之路 阅读(1399) 评论(0) 推荐(0) 编辑
摘要:SVN 常用命令一览表 命令 功能 使用格式 checkout 检出 svn co URL up 更新到当前URL的末端 svn up switch 更新到某一tag/branch svn switch (tag/分支)URL add 增加 svn add 文件名 rm 删除文件 svn rm 文件名 删除目录 svn rm 目录名 dif... 阅读全文
posted @ 2015-09-24 10:37 程序员修练之路 阅读(641) 评论(0) 推荐(0) 编辑
摘要:1. 签出源代码到本机 在本机创建文件夹StartKit,右键点击Checkout,弹出如下图的窗体: 2. 2 在上图中URL of Repository:下的文本框中输入svn server中的代码库的地址,其他默认,点击OK按钮,就开始签出源代码了。 说明:上图中的Checkout Depth,有4个选项,分别是迁出全部、只签出下一级子目录和文件、只签出... 阅读全文
posted @ 2015-09-24 09:34 程序员修练之路 阅读(1755) 评论(0) 推荐(0) 编辑
摘要:SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。 Subversion是什么? 它是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subversi... 阅读全文
posted @ 2015-09-24 09:28 程序员修练之路 阅读(637) 评论(0) 推荐(0) 编辑
摘要:int a[5]={1,2,3,4,5}; int b[100]; 一个数组名代表的是数组中第一个元素的位置,通过数组名我们可以访问数组,先看下面两个问题 问题一:看到一篇文章这么写的。。int array[10];int (*ptr)[10];ptr=&array;//这里说明&array是指向数组的指针,但为什么&array是指向数组的指针?答一:对数组名取地址在C标准里面是未定义的行为。由于... 阅读全文
posted @ 2015-09-06 22:16 程序员修练之路 阅读(766) 评论(0) 推荐(0) 编辑
摘要:解决方法:右键点击你的项目,选择属性,再点击配置属性中的常规,常规中有个平台工作集,把V120改成V100,点击应用即可。 阅读全文
posted @ 2015-07-25 20:51 程序员修练之路 阅读(1772) 评论(0) 推荐(0) 编辑
摘要:变长一维数组 这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数组,你可以这样做: //文件名: array01.cpp #include using namespace std; int main() { int len; cin>>len; //用指... 阅读全文
posted @ 2015-07-16 22:54 程序员修练之路 阅读(1460) 评论(0) 推荐(0) 编辑
摘要:堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树。 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。 当父结点的键值总是大于或等于任何一个子节点的键值时为... 阅读全文
posted @ 2015-07-10 15:42 程序员修练之路 阅读(978) 评论(0) 推荐(0) 编辑
摘要:argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i>i; return 0; } 执行时敲入 F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.E... 阅读全文
posted @ 2015-07-09 19:07 程序员修练之路 阅读(664) 评论(0) 推荐(0) 编辑