C/C++语言
文章平均质量分 74
Rabbit_Nick
这个作者很懒,什么都没留下…
展开
-
数组的顺序存储和实现
对于数组A,一旦给定其维数n及各维长度bi(1≤i≤n),则该数组中元素的个数是固定的,不能对数组做插入和删除操作,不涉及移动数据元素操作,因此对于数组而言,采用顺序存储方式比较合适。 我们知道,计算机内存器的结构是一维的,因此对于一维数组按下标顺序分配即可,而对多维数组,就必须按照某种次序,将数据元素排成一个线性序列,然后将这个线性序列存放在存储器中。 数组的顺序存储结构有两原创 2013-05-24 17:05:54 · 13681 阅读 · 0 评论 -
C++ : virtual函数和纯virtual函数
2011-09-18今天补习C++virtual函数和纯virtual函数(pure vituralfunction),可以使一个类成为抽象类。一个纯virtural函数是在声明时“初始化值为0”的函数,如下所示:virtual void f() const = 0;//purevirtual function“=0”成为纯指示符(purespecifier)。纯virtual函数不原创 2013-05-24 17:02:00 · 753 阅读 · 0 评论 -
ANSI C的library快的排序法:Quick…
2011-5-20 Abstract一想到排序,你會想到什麼?Bubblesort?事實上ANSI C的library就帶了一個超快的排序法:Quick Sort!! Introduction若談到排序,大概有兩種想法,學術派的會想到資料結構所教的一堆排序法,如Bubble sort...,熟悉C++的會想到STL的sort() algorithm,其實ANSI C的stdlib.原创 2013-05-24 17:00:18 · 510 阅读 · 0 评论 -
C实现简易运动轨迹检测的程序
2011-4-25这几天,XXX的项目让我做了一个运动轨迹检测的程序,主要用来检测汽车和给定路线的偏移问题,和定位汽车主要在什么路段上。如下图 下面是一些算法和资料:首先,要确定移动的点,也就是汽车和线段之间的距离,不能直接理解成点到直线的距离,因为当出现下面的情况的时候,点P到BC和到A的距离都是一样的,这样就区分不点到底靠近哪条线上了。很显然,点固然靠近的应该是线原创 2013-05-24 17:00:09 · 5054 阅读 · 0 评论 -
stack implement C++
Stack Source Code in C++Special thanks to Eric Suh for contributing the followingimplementation of a stack. This implementation uses templates tofaciliate generic programming./ * --------原创 2013-05-24 17:04:51 · 473 阅读 · 0 评论 -
auto_ptr 自動管理配置資源
對於使用new動態配置的資源,在不使用時必須記得delete,以釋放記憶體空間,然而動態記憶體配置很容易發生忘了delete,或是對同一個記憶體位址delete兩次(例如一個物件被指定給兩個指標),或是對一個已經被delete的位址再作讀寫動作。C++標準函式庫中提供auto_prt,可以協助您動態管理new而建立的物件,要使用auto_prt,您要含入memory表頭檔,例如:#inc原创 2013-05-24 17:04:48 · 503 阅读 · 0 评论 -
C++ 參考(Reference)
參考(Reference)型態代表了變數或物件的一個別名(Alias),參考型態可以直接取得變數或物件的位址,並間接透過參考型態別名來操作物件,作用類似於指標,但卻不必使用指標語法,也就是不必使用*運算子來提取值。要定義參考型態,在定義型態時於型態關鍵字後加上&運算子,例如:intvar = 10; // 定義變數int*ptr = &var; // 定義指標,指向var的位址in原创 2013-05-24 17:04:46 · 582 阅读 · 0 评论 -
命令列引數
http://caterpillar.onlyfun.net/Gossip/CppGossip/CommandArg.html程式在執行時,可以附加一些引數以指定執行不同的功能,例如:copy-r ./temp ./tmp其中copy是程式名稱,而-r、./temp、./tmp都是在程式執行時附加給程式的一些引數,這種程式執行方式在以文字畫面為主的程式中相當常見,稱之為「命令列引數」(原创 2013-05-24 17:04:44 · 1129 阅读 · 0 评论 -
new 運算子與 delete 運算子
http://caterpillar.onlyfun.net/Gossip/CppGossip/newDelete.html到目前為止,您都是事先宣告好所要使用的變數,當程式開始執行時,這些變數就會自動被配置記憶體空間。然而有時有些變數並不知道何時會被使用,您希望在使用到的時候再配置空間給變數,並在變數不使用的時候,將變數所佔有的空間還給記憶體,這時候我們可以使用new運算子與delete原创 2013-05-24 17:04:42 · 436 阅读 · 0 评论 -
C++ : Complex numbers library
Complex numberslibraryThe complex library implements the complex class to containcomplex numbers in cartesian form and several functions andoverloads to operate with them:ClassescomplexCom原创 2013-05-24 17:02:09 · 654 阅读 · 0 评论 -
链接时报错:undefined reference …
如果一个虚函数不是纯虚函数,父类需要实现它。否则就会报错:undefined reference to vtableXXX例如:class a{public: virtual bool fun();}class b:public a{ virtual bool fun(){cout << "I amb" <<endl;}}以上代码编译时会报错undef原创 2013-05-24 17:02:18 · 526 阅读 · 0 评论 -
GNU Automake By Example
Table of ContentsAbstractA Minimal ProjectEditing Automake-based Projects with KDevelopAdding Doxygen SupportA More Complex ExampleTopics Not CoveredLinksAbstractThis article presen原创 2013-05-24 17:05:00 · 660 阅读 · 0 评论 -
Implementing a Queue - Source Co…
Implementing a Queue - Source Codeby Eric Suh This source file is an implementation of the Queue class. The classis implemented with templates, and the size is determineddynamically at initializa原创 2013-05-24 17:04:53 · 541 阅读 · 0 评论 -
C++ 使用 string 型態
直接操作字元陣列來進行字串操作是比較低階的行為,就如之前所說的,陣列本身對自己的長度沒有意識,所以無法判斷自己是否為空字串,而陣列也不能直接指定給另一個陣列,所以您無法直接將字串指定給另一個字串,您也無法對兩個字串直接進行串連的動作,例如:charstr1[] = "text1";charstr2[] = "text2";str1= str2; // errorcout<< st原创 2013-05-24 17:04:39 · 542 阅读 · 0 评论 -
[转]C 编程最佳实践
http://www.ibm.com/developerworks/cn/linux/l-bppc/简介本文是为了满足开发人员的需要而写的。我们总结了一套指南,无论作为开发人员还是顾问,这些指南多年来一直都很好地指导着我们,我们把它们作为建议提供给您,希望对您的工作有所帮助。您也许不赞同其中的某些指南,但我们希望您会喜欢其中的一些并在您的编程或移植项目中使用它们。回页首风格与原创 2013-05-24 17:04:33 · 408 阅读 · 0 评论 -
about srandom( time( NULL ))
may I know the meaning or even how toread this: srandom( time( NULL ))?NULLA null pointer. Zero. Points tonothing.time(NULL)The time function returns the currenttimestamp as an integer. Itac原创 2013-05-24 17:03:52 · 680 阅读 · 0 评论 -
Linux下stricmp在此作用域中尚未声…
Linux下stricmp在此作用域中尚未声明解决办法在使用大小写不敏感函数比较字符串时,很顺手的来了个stricmp,g++编译的时候:错误:‘stricmp’在此作用域中尚未声明。后来查了一下,stricmp是windows特有的。而linux是strcasecmp,包含在头文件string.h下。问题解决了原创 2013-05-24 17:03:41 · 1136 阅读 · 0 评论 -
Linux 信号signal处理函数
alarm(设置信号传送闹钟)相关函数 signal,sleep表头文件#include定义函数 unsigned int alarm(unsigned intseconds);函数说明alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。返回值返回之前闹钟的剩余秒数原创 2013-05-24 17:03:17 · 432 阅读 · 0 评论 -
memcpy与memmove
发现一直有人提这个区别,我自己也没想过有什么异常的地方,于是找到了linux下的源码看看void * __cdecl memcpy ( void * dst,const void * src,size_tcount){ void* ret = dst; while(count--) { *(char*原创 2013-05-24 17:02:20 · 496 阅读 · 0 评论 -
STL 型式(STL idiom) vector
http://caterpillar.onlyfun.net/Gossip/CppGossip/vector2.htmlvector的STL型式,其實就是以物件導向的方式來操作vector(如果您還沒接觸過物件導向程式設計,這邊介紹的可能稍有難度),以物件的方式來操作vector是比較被鼓勵的方式,以下將介紹幾個vector的基本操作。您可以建構一個元素為空的vector物件:vecto原创 2013-05-24 17:04:37 · 441 阅读 · 0 评论 -
陣列型式(Array idiom) vector
http://caterpillar.onlyfun.net/Gossip/CppGossip/vector1.html您可以使用vector來替代陣列,並使用陣列型式(Arrayidiom)的方式來操作vector,要使用vector,必須含入vector表頭檔:#include要建立vector型態的物件(Object),您必須提供元素型態與長度資訊,例如下例中建立int元素的ve原创 2013-05-24 17:04:35 · 436 阅读 · 0 评论 -
c++ vector
This article comes from there : http://www.cplusplus.com/reference/stl/vector/VectorVectorsare a kind of sequence container. As such, their elements areordered following a strict linear sequenc原创 2013-05-24 17:04:01 · 521 阅读 · 0 评论 -
在c++中 struct 和class
在c++中struct 和class这两个关键字定义类的区别只有一个:如果使用class在定义,那么定义在第一个访问标号前的任何成员都隐式指定为private;如果是使用struct关键字,那么这些成员都是public。使用class 还是 struct关键字来定义类,仅仅影响默认的初始化访问级别。原创 2013-05-24 17:00:05 · 445 阅读 · 0 评论 -
排列组合问题的通用算法
排列组合问题的通用算法 尽管排列组合是生活中经常遇到的问题,可在程序设计时,不深入思考或者经验不足都让人无从下手。由于排列组合问题总是先取组合再排列,并且单纯的排列问题相对简单,所以本文仅对组合问题的实现进行详细讨论。以在n个数中选取m(0个数为例,问题可分解为:1. 首先从n个数中选取编号最大的数,然后在剩下的n-1个数里面选取m-1个数,直到从n-(m-1)个数中选取1个数为止转载 2013-05-24 17:00:03 · 585 阅读 · 0 评论 -
C语言实现数学上的组合和排列
今天想用C语言实现下数学上的组合和排列,一直很郁闷。上网搜索到一个例子: #include #include //从n个元素的数组a中,取m个元素的组合bool zuhe(char a[],int n,int m){//p[x]=y 取到的第x个元素,是a中的第y个元素 int index,i,*p; p=(int*)malloc(size原创 2013-05-24 17:00:00 · 1844 阅读 · 0 评论 -
一个动态分配二维数组的ANSI C程序
昨日曹兄问我一个问题,想出了一个动态分配二维数组的ANSI C程序。其实思想很简单,我一开始就想到了,肯定是先建立指针数组,然后每个指针数组再分配连续的空间。画了个草图,可能看起来不怎么好看。。。C程序" TITLE="一个动态分配二维数组的ANSI C程序" /> 先定义一个指向指针的指针P,char**p,然后动态分配指针数组*p[row],就是二维数组的行,最后原创 2013-05-24 16:59:58 · 674 阅读 · 0 评论 -
C standard library contents
C StandardLibraryContents: Diagnostics : Character Class Tests: Error Codes Reported by (Some)Library Functions : Implementation-defined Floating-PointLimits : Implementat原创 2013-05-24 16:59:56 · 660 阅读 · 0 评论 -
《C语言深度解剖》小记
今日阅读一本不错的书,叫《C语言深度解剖》做一些读书笔记: 关于register修饰符注意点:虽然寄存器速度非常快,但是用register修饰符也有一些限制的:register变量必须是能被CPU寄存器所接受的类型。意味着register变量必须是一个单个的值,并且其长度应小于或者等于整型的长度。而且register变量可能不存放在内存中,所以不能用取地址运算符“&”来获取registe原创 2013-05-24 16:59:54 · 548 阅读 · 0 评论 -
今天发现Eclipse cdt 使用scanf后…
今天发现Eclipse的一个BUGcdt 使用scanf后的一个BUG" TITLE="今天发现Eclipse cdt 使用scanf后的一个BUG" />就是在输入函数scanf后,发现前面的东西都不能打印在console里边,只有先输入东西以后才行,上网搜索以后发现一个帖子。Nikos Panagos wrote:Hello everybody,Theeclipse co原创 2013-05-24 16:59:52 · 523 阅读 · 0 评论 -
sprintf函数的一点笔记
用sprintf函数出现了点问题,上网学习了一下下面是笔记 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf原创 2013-05-24 16:59:50 · 534 阅读 · 0 评论 -
[转]已知两圆圆心坐标及半径求两圆…
在一个二维平面上给定两个圆的圆心横纵坐标、半径共6个参数, 求交点. 这个问题无非是解二元二次方程组. 普通二元二次方程联立消元求解的困难在于, 中间过程里的系数会变得非常复杂, 从而导致容易出错---因为公式毕竟还是要人来推导, 人的出错率比计算机要高得多得多---改用圆的参数方程求解, 可以在显著地减轻这个负担. 现在谈谈这问题的求解过程. 选择圆的参数方程的好处是方程原创 2013-05-24 17:00:07 · 1272 阅读 · 0 评论 -
C实现一个检查点在多边形内部
2011-5-2最近又写了一个检查点在多边形内部的程序,主要还是为了XX公司那边的一个项目做点小事情。好了,下面开始讲解原理。射线法检测,其实就是在已知点内,固定好该点的X或者Y坐标,然后对任意X或者Y轴做垂线(固定X对Y轴做垂线,固定Y对X轴做垂线)。垂线和线段如果相交的次数是奇数,证明点在多边形内部,如果是偶次,说明点在多边形外部。 但是,要讨论的是凸多边形会有特殊情况。原创 2013-05-24 17:00:11 · 1305 阅读 · 0 评论 -
Makefiles by example
Compiling your source code files can be tedious, specially when youwant to include several source files and have to type the compilingcommand everytime you want to doit. Well, I have news for yo原创 2013-05-24 17:03:56 · 560 阅读 · 0 评论 -
C++ Log File Class
C++ can become verydifficult to use especially with large projects where you can't seeall the variables. Here's a very simple C++ logging class that can takelogs for your softwarewithout any effor原创 2013-05-24 17:03:39 · 588 阅读 · 0 评论 -
Linux时间编程
一、时间的类型(1)格林威治标准时间 Coordinated Universal Time(UTC)是世界标准时间,即常说的格林威治标准时间(Greenwich MeanTime,GMT). 注:格林威治时间和本地时间不同.(2)日历时间 日历时间(Calendar Time)是用"一个标准时间点(如1970年1月1日0点)到此时经过的秒数"来表示的时间. 二、时间函数的原创 2013-05-24 17:03:19 · 407 阅读 · 0 评论 -
C++ keyword: delete note
keyword: delete note" TITLE="C++ keyword: delete note" /> Oops, today, Iam programing in C++. Then, I found someattentions about delete. for Array, if we usedelete not delete [] , it willarise a原创 2013-05-24 17:01:40 · 627 阅读 · 0 评论 -
c++ try catch throw 用法
c++ try_catch 1、基础介绍try{//程序中抛出异常throw value;}catch(valuetype v){//例外处理程序段}语法小结:throw抛出值,catch接受,当然,throw必须在“try语句块”中才有效。2、深入throw:(i)、程序接受到throw语句后就会自动调用析构器,把该域(try后的括号内)对象clean u原创 2013-05-24 17:01:36 · 512 阅读 · 0 评论 -
【转】C++虚函数表解析
C++虚函数表解析(转)C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的原创 2013-05-24 17:01:34 · 381 阅读 · 0 评论 -
C/C++中int轉string
2011-5-17C/C++並沒有提供內建的int轉string函數,這裡提供幾個方式達到這個需求。若用C語言,且想將int轉char*,可用sprintf(),sprintf()可用類似printf()參數轉型。标准C中实现为:1 9#include "stdio.h"1011void int2str(int , char *);1213int main() {原创 2013-05-24 17:00:16 · 472 阅读 · 0 评论 -
C 语言中的指针和内存泄漏
2011-5-6C 语言中的指针和内存泄漏引言对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏。这些的确是消耗了开发人员大多数调试时间的事项。指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是一旦您了解了指针及其关联内存操作的基础,它们就是您在C 语言中拥有的最强大工具。本文将与您分享开发人员在开始使用指针来编程前应原创 2013-05-24 17:00:14 · 438 阅读 · 0 评论