C/C++
文章平均质量分 70
heyabo
做正确的事让这个世界变得美好一点
展开
-
读取文件行并分割行中字符串:C/C++以及python实现
一、问题描述给定一文件,依次读取文件中各行的字符串(字符串之间以空格分开)。例如:文件test.txt中有如下内容:first second third forth (第一行)fifth sixth seventh (第二上)... (其他行)则读取的内容依次为: first second third forth fifth sixth原创 2013-05-22 11:16:49 · 30524 阅读 · 8 评论 -
日期加天数返回日期 - C语言实现
问题描述:已知日期,格式为mm-dd-yyyy(月-日-年,如2003年9月10日为:9-10-2003),给定一个天数(如100天),计算:从该日期算起,经过给定天数之后的日期。主要思想:1、当给定的天数days大于或等于365(或366)时,计算目标年份2、当给定的天数days小于365(或366)时,计算目标年份中的月份3、当剩余天数不足一月时,计原创 2013-05-10 21:29:51 · 11399 阅读 · 5 评论 -
具有返回值的函数之作为
首先解释一下文章标题,听起来有点拗口,意思是:具有返回值的函数,在调用时以及返回时都做了哪些事情(这些事情往往从代码表面是看不到的)。一、原理关于函数的返回值,先说下 return 语句,return 语句结束当前正在执行的函数,并将控制权返回给调用此函数的函数。有两种形式:1.return; //不带返回值的函数中(void)不带返回值的 return 语句只能用原创 2013-04-10 14:14:13 · 4642 阅读 · 0 评论 -
三种基于比较的nlgn排序算法 - 归并-堆-快排 - C++实现
引言注:由于没有启用任何公示编辑器,为表示方便:以下涉及时间复杂度表示时,其渐近符号用以下符号代替:本文将介绍三种能在O(nlgn)时间内排序n个数的算法:归并排序、堆排序和快速排序。它们都是基于比较的排序,前两种算法在最坏情况下达到此上界,快速排序在平均情况下达到此上界。注:比较排序指排序结果中,各元素的次序基于输入元素间的比较。且可以证明:任何一个比较排序算法在最坏原创 2013-05-13 19:43:33 · 9340 阅读 · 13 评论 -
C++ RTTI
一、定义:RTTI:Run Time Type Identification ,运行时类型识别:指程序能够使用基类的指针或引用来检索这些指针或引用所致对象的实际派生类型。二、使用方式:C++中有两个操作符提供RTTI:(1)typeid 操作符:返回指针或引用所指对象的实际类型。(2)dynamic_cast 操作符:将基类类型的指针或引用安全地转换为派生类型的指针和引用。 注:此二操作符原创 2012-12-20 10:17:44 · 6121 阅读 · 2 评论 -
STL之priority_queue
std::priority_queue的定义、源码实现,以及测试实例原创 2013-07-23 14:48:38 · 5373 阅读 · 4 评论 -
c++类static成员
由题目,这里只讨论类中的static作用(类的静态成员),即两点:static数据成员 和 static成员函数。静态成员的提出:为了解决数据共享问题。当然全局对象也可以实现数据共享,但相比,static有以下两个优点:(1)封装性:static成员可以是私有成员,而全局对象是全局的,一般用户代码就可以修改这个值。(2)避免命名冲突:static成员的名字是在类的作用域中,因此原创 2013-03-16 21:47:02 · 4454 阅读 · 0 评论 -
Windows 动态链接库 DLL 浅析
一、概念DLL:Dynamic Link Library,即动态链接库,这种库包含了可由多个程序同时使用的代码和数据。它是microsoft在windows操作系统中实现共享函数库概念的一种实现方式。其中windows中 一些作为DLL实现的文件有:ActiveX控件(.ocx)文件:如windows上的日历控件。控制面板(.cpl)文件:控制面板中的每一项都是一个专用的DLL原创 2013-03-26 17:51:54 · 38613 阅读 · 3 评论 -
Effective shared_ptr
零、前言这篇文章本是作为:C++ 智能指针类的第二部分,但无奈那篇篇幅已经不能再长了,于是只好将其单独写成一篇,且把 shared_ptr 的循环引用放在这里写,这样稍微比较连贯一些。一、shared_ptr 的循环引用定义:所谓循环引用,可类比于这样的一棵树,它含有父亲结点指向孩子结点的指针,也有孩子结点指向父亲结点的指针,即父亲结点与孩子结点互相引用。可原创 2013-04-13 08:12:18 · 1941 阅读 · 2 评论 -
C++ 智能指针类
这篇文章主要来源于:codeguru网站的一篇文章:A TR1 tutorial:smart pointer (详细介绍了C++的智能指针,尤其是shared_ptr)。众所周知,在 TR1 之前,C++标准库中的智能指针只有auto_ptr,但由于它的【排他所有权模式】(exclusive ownership model)导致了许多问题,为解决,C++TR1中引入了 boost 开源库中的原创 2013-04-12 10:10:18 · 21771 阅读 · 1 评论 -
三种线性时间O(n)排序算法 - 计数-基数-桶 - C++实现
引言注:由于没有启用任何公式编辑器,为表示方便:以下涉及时间复杂度表示时,其渐近符号用以下符号代替:先来看一个定理:任意一个比较排序算法在最坏情况下,都需要做 $(nlgn)次的比较。其可用决策树模型加以证明,详见:《算法导论》第8章8.1节。该定理指出了比较排序的时间复杂度下界,即没有比较更少的了。故以下介绍的三种算法均不是基于比较的排序算法,其均对输入数据作了某原创 2013-05-13 03:38:45 · 3847 阅读 · 0 评论 -
Linux 静态库与共享库的使用
一、静态库1、概念:将所有相关的目标文件打包成为一个单独的文件-静态库文件,以.a结尾。静态库可作为链接器的输入,链接器会将程序中使用的到函数的代码从库文件中拷贝到应用程序中。一旦链接完成,在执行程序的时候就不需要静态库了。注1:由于每个使用静态库的应用程序都需要拷贝所用函数的代码,所以静态链接的文件会比较大。注2:在Unix系统中,静态库以一种称为存档(archi原创 2013-09-14 18:22:31 · 9082 阅读 · 24 评论 -
变量属性的总结
变量的属性有五种: (1)名字(必须显示说明) (2)类型 (必须显示说明) (3)存储类别 (缺省方式或显示说明(使用:auto、register、static、extren)) (4)作用域 (由存储类别决定) (5)生存期 (由存储类别决定) 前两种不必解释了,顾名思义。下面详原创 2012-03-05 17:23:41 · 5093 阅读 · 2 评论 -
初始化 struct 变量
1、C 语言中的 struct在C语言中,定义一个 struct 变量的同时不能对其(成员)进行初始化 ,即成员没有默认值。它只能在定义对象时,对对象的成员变量进行初始化。如:struct widget{ int a; int b; bool flag;};//1widget w = {0, 0, false};//or 2widget w;原创 2013-04-24 21:07:54 · 15970 阅读 · 1 评论 -
类的指针成员管理
C++中,标准库的使用大大减少了现代C++程序中对指针的需要。然而,许多应用程序仍然需要使用指针,特别是在类的实现中,并且包含指针的类复制控制方面容易出错。 具有指针成员的对象一般需要定义复制控制成员。如果依赖合成版本,会给类的用户增加负担。用户必须保证成员所指向的对象存在,只要还有指针指向该对象。为了管理这些具有指针成员的类,必须定义三个复制控制成员:复制构造函数、赋值操作原创 2012-03-26 13:08:32 · 904 阅读 · 0 评论 -
指针的类型
问:一个指向类对象的指针与一个指向整数的指针区别是什么?答: 以内存需求的观点来说,没有什么不同。二者均需要足够一个机器字的内存来放置指针。 指向不同类型的各指针之间的真正差异在:其所寻址出来的object类型不同。即:编译器会根据“指针类型”来解释某个特定地址中的内存内容及其大小。如,指向类对象的指针---其所指内存内容为对象,大小为该对象的大小(成员变量原创 2012-06-01 16:21:51 · 1044 阅读 · 0 评论 -
数组与指针
数组 定义:在程序设计中,若把具有相同类型的若干变量按有序的形式组织起来,则这些按序排列的同类数据元素的集合称为数组。按数组元素的类型不同,又可分为:数值数组,字符数组,指针数组和结构数据等。指针 作用:C++拥有在运行时获得变量或对象的地址和通过地址操作数据的能力,而这种能力是通过指针来发挥的。 定义:用来存储 数据地址 的特殊变量,它本身也是一种类原创 2012-06-06 14:26:14 · 823 阅读 · 0 评论 -
单链表的逆置-C++实现
对于单链表的逆置有两种方法可以实现:(1)利用辅助指针 基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。 实现代码:typedef int DataType; //类型定义typedef struct node{ //单链表定义 DataType data;原创 2012-05-28 21:43:57 · 72066 阅读 · 13 评论 -
error: cast from ‘char*’ to ‘int’ loses precision
编译时出现错误: error: cast from ‘char*’ to ‘int’ loses precision原因:程序中存在char* addrCom; addrCom= ......//赋值 if(-1 == (int)addrCom) //导致编译出错 { ...... } 上面是隐式转换,将其改为标准C++显示类型转换:static_c原创 2012-08-31 09:33:55 · 22560 阅读 · 1 评论 -
C++11 'yield' is not a member of 'std::this_thread'
原因:GCC没有定义这个宏:_GLIBCXX_USE_SCHED_YIELD解决办法:编译时加上选项:-D_GLIBCXX_USE_SCHED_YIELD或者:长远打算修改gcc的c++config.h文件去定义这个宏。详情:'yield' is not a member of 'std::this_thread' see also: C++11 error: ‘sleep_fo原创 2012-12-25 16:24:27 · 4098 阅读 · 0 评论 -
C++11 error: ‘sleep_for’ is not a member of ‘std::this_thread’
背景:为了学习c++11的多线程和lamda表达式的特性,升级了gcc(从4.4.6到4.7.1),写完thread程序编译时却发现还是遇到了一些问题。原因:GCC没有定义这个宏:_GLIBCXX_USE_NANOSLEEP解决办法:编译时加上选项:-D_GLIBCXX_USE_NANOSLEEP或者:修改gcc的c++config.h文件去定义这个宏再或者:重新安装gcc且使原创 2012-12-25 16:36:38 · 7270 阅读 · 0 评论 -
C++笔试题整理
资料来源:http://blog.csdn.net/dongfengsun/article/details/15419261.已知String类定义如下:class String{public:String(const char *str = NULL); // 通用构造函数String(const String &another); // 拷贝构造函数~ String原创 2012-05-31 21:11:33 · 2750 阅读 · 1 评论 -
C++ time
一、三个概念:(1)UTC/GMT:Coorainated Universal Time:它是一个标准,最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治平时,也即格林威治标准时间(Greenwich Mean Time,GMT),在大多数场合,UTC与GMT等同(只是GMT不再由科学界精确定义)。注:为描述方便,本文中将UTC与GMT等同。(2)Local t原创 2012-12-17 16:52:17 · 11586 阅读 · 1 评论 -
《c++primer》之 变量和类型
2.1 基本内置类型2.2 字面值常量2.3 变量 变量的类型--->决定了分配给变量的存储空间大小(含义决定大小)和可以在其上执行的操作(操作)。 初始化--->C++支持两种方式初始化(变量)的形式: (1)复制初始化:使用等号(=); (2)直接初始化:将初始化式放在圆括号中。 下面来区分两个概念:初始化VS赋值原创 2012-03-05 11:46:00 · 1104 阅读 · 0 评论 -
《c++primer》之基本语言
程序设计语言,具有共同特征:均需要提供一些基本特征集,如下:内置数据类型,如整型,字符型等(类型:点明含义及操作);表达式和语句:用于操纵上述类型的值;变量:用于对象命名;控制结构,如if,while用于有条件地重复执行一组动作;函数:用于把行为抽象成可调用的计算单元。扩充:大多数现代程序设计语言均采用两种方式扩充上述基本特征集: (1)允许程序员通过自定义数据类原创 2012-03-05 09:41:24 · 561 阅读 · 0 评论 -
复制构造函数(copy constructor)
定义: 只有单个形参,该形参是对本类类型对象的引用(常用const修饰),这样的构造函数成为复制构造函数。使用方式:(1)显示使用----用一个同类型的对象初始化该对象时;(2)隐式使用----将该类型的对象传递给函数或从函数返回该类型对象时。三种类型的复制构造函数:*bitwise copy constructor :逐位复制-----默认方式*合成的 co原创 2012-05-13 10:52:58 · 12462 阅读 · 0 评论 -
C++中如何修改const变量
一、结论声明:不同于C语言的const变量修改问题(可以通过指针间接修改const变量的值),这里只讨论C++ 里的const。C++ const 修饰符,表示常量,即如果以后保证不会修改则声明为const,否则若要修改,那一开始为什么还要声明为const呢?根据C++标准,对于修改const变量,属于:未定义行为(指行为不可预测的计算机代码),这样一来此行为取决于各种编译器的具体实现原创 2013-04-01 12:30:06 · 22337 阅读 · 5 评论