C语言编程
文章平均质量分 74
liwentongliunian
这个作者很懒,什么都没留下…
展开
-
怎么样进行拓扑排序
每次找到图中入度为0的点,将这个点加入队列中,并从图中删去这个点(删去由这个点所发出的边并将这些边所能到达的点的入度-1),重复这个操作,若在队列长度小于图中点的个数的情况下找不到入度为0的点的话,就代表图中有环,无法进行拓扑排序,否则在结束后输出这个队列,就是对这个图的一种(注意,一个图可能存在多种可能的拓扑排序的方案)拓扑排序的方案。原创 2014-06-26 09:06:11 · 326 阅读 · 0 评论 -
C++虚基类的作用
虚基类的作用 当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如:class CBase { };class CDerive1:virtual public CBase{ };class CDerive2:virtual public CBase{ };class CDerive12:public CDerive1转载 2016-08-15 22:25:01 · 224 阅读 · 0 评论 -
编译生成静态库文件
Lunix下编译静态库文件:.o后缀文件:编译生成的中间代码文件;.a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大;.so后缀文件:动态库文件,只是一个指向,不会合到可执行程序中,当要调用函数库的时候才使用; 用一个简单的例子阐述下在lunix环境下生成静态库文件的过程:一. 源码文件:so_test.h:voi转载 2016-08-15 22:25:41 · 429 阅读 · 0 评论 -
编译生成动态库文件(方式二)
unix下生成动态库文件: 之前已经介绍了依靠makefile文件实现可执行文件,下面说下在源文件中指定加载的动态库文件; 一. 源码文件:datetime.h: #ifndef __DATETIME_H #define __DATETIME_H /* 日期结构 */转载 2016-08-15 22:27:44 · 501 阅读 · 0 评论 -
编译生成动态库文件
unix下生成动态库文件: 之前已经介绍了.o,.a,.so文件类型的含义,.so后缀的文件是动态库文件。 下面介绍在编译过程中链接到动态库文件的方法:一. 源码文件:so_test.h:void test_a();void test_b();void test_c();转载 2016-08-15 22:28:40 · 425 阅读 · 0 评论 -
vector容器与iterator迭代器
vector容器vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::vector;vector是一个类模板(c转载 2016-08-15 22:29:35 · 332 阅读 · 0 评论 -
C++模板
模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。 使用模板的目的就是能够让程序员编写与类型无关的代码转载 2016-08-15 22:30:22 · 233 阅读 · 0 评论 -
C++分离式编译模式
1.分离编译模式的定义编辑一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件连接起来形成单一的可执行文件的过程。[1] 2.分离编译模式的由来编辑分离编译模式是C/C++组织源代码和生成可执行文件的方式。在实际开发大型项目的时候,不可能把所有的源程序都放在一个头文件中,而是分别由不同的程序员开发不同的模块,再将这转载 2016-08-15 22:31:08 · 562 阅读 · 0 评论 -
C++ try catch 用法
一、简单的例子首先通过一个简单的例子来熟悉C++ 的 try/catch/throw:1 #include //包含头文件2 #include3 double fuc(double x, double y) //定义函数4 {5转载 2016-08-15 22:31:54 · 1622 阅读 · 1 评论 -
范围for语句
其形式是for(declartion: expression)statement;一个简单的实例如下:#include #include using namespace std;using std::string;int main(){string s="hello world!";int i=0;for(auto c:转载 2016-08-15 22:32:36 · 382 阅读 · 0 评论 -
C++虚基类的实现机制:笔记
在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件:(1)、obj 是一个虚拟继承的派生类的对象(2)、mem是从虚拟基类派生下来的成转载 2016-08-15 22:24:19 · 257 阅读 · 0 评论 -
MPEG2相关原理概述
MPEG是运动图像专家组(Moving Picture Experts Group)的简称,其实质上的名称为国际标准化组织(ISO)和国际电工委员会(IEC)联合技术委员会(JTC)1的第29 分委员会的第11工作组,即ISO/IEC JTC1/SC29/WG11,成立于1988年。其任务是制定世界通用的视音频编码标准。因为,广播电视数字化所产生的海量数据对存储容量、传输带宽、 处理能力及频谱资源转载 2016-08-15 22:23:36 · 3774 阅读 · 0 评论 -
Linux下的库操作工具-nm、ar、ldd、ldconfig和ld.so
1、nm [options] file 列出file中的所有符号 [option] -c 将符号转化为用户级的名字 -s 当用于.a文件即静态库时,输出把符号名映射到定义该符号的模块或成员名的索引 -u 显示在file外定义的符号或没有定义的符号 -l 显示每个符号的行号,或为定义符号的重定义项转载 2016-08-15 22:22:34 · 269 阅读 · 0 评论 -
realloc,malloc,calloc的区别
三个函数的申明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(size_t numElements, size_t sizeOfElement); 都在stdlib.h函数库内它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL m转载 2014-06-11 21:12:02 · 339 阅读 · 0 评论 -
C语言
#includevoid main(){ int i; int temp=1; for(i=1;i { temp*=i; } printf("%d\n",temp);}还没有注意到原创 2014-06-16 15:52:17 · 433 阅读 · 0 评论 -
二叉树的基本性质
(1) 在二叉树的第k层上,最多有2k-1(k≥1)个结点;解释:最多的时候是满二叉树,它的第1层有21-1=1个结点;第2层有22-1=2个结点;第3层23-1=4个结点;第4层有24-1=8个结点;……(2) 深度为m的二叉树最多有2m-1个结点,最少有m个结点;(3)对于任意一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个;即如果其叶子结点数为N0,而度转载 2014-06-22 20:24:52 · 629 阅读 · 0 评论 -
Linux的nm查看动态和静态库中的符号
功能列出.o .a .so中的符号信息,包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。使用nm [option(s)] [file(s)]有用的options:-A 在每个符号信息的前面打印所在对象文件名称;-C 输出demangle过了的符号名称;-D 打印动态符号;-l 使用对象文件中的调试信息打印出所在转载 2016-08-15 22:18:28 · 250 阅读 · 0 评论 -
GDB动态库搜索路径
笔记:当GDB无法显示so动态库的信息或者显示信息有误时,通常是由于库搜索路径错误导致的,可使用set sysroot、set solib-absolute-prefix、set solib-search-path来指定库搜索路径。1. set sysroot 与 set solib-absolute-prefix 是同一条命令,实际上,set sysroot是set solib-转载 2016-08-15 22:19:20 · 428 阅读 · 0 评论 -
solib-absolute-prefix 和solib-search-path的区别
solib-absolute-prefix 和solib-search-path是 gdb比较常用的选项,用来设置符号文件的位置。那么,它们有什么区别呢?solib-absolute-prefix设置的是被搜索文件路径的前缀,solib-search-path设置的是被搜索文件的路径。solib-search-path可以有多个路径,中间按用:隔开, solib-absol转载 2016-08-15 22:20:05 · 767 阅读 · 0 评论 -
Linux系统调用--getrlimit()与setrlimit()函数详解
功能描述:获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#include int getrlimit(int resource, s转载 2016-08-15 22:20:42 · 291 阅读 · 0 评论 -
采用dlopen、dlsym、dlclose加载动态链接库【总结】
1、前言 为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续补充。如何将程序设计为插件形式,挖掘出主题和业务之间的关系,需要进一转载 2016-08-15 22:21:59 · 373 阅读 · 0 评论 -
String 相关的一些内容
因为某些历史的原因,也为了与C兼容,所以C++语言中的字符串字面值并不是标准库类型string的对象,切记,字符串字面值与string是不同类型。处理string中的字符可以使用其中的cctype头文件中的定义的函数。转载 2016-08-15 22:33:07 · 368 阅读 · 0 评论