C 标准模板库的使用,c语言 自己编写的库h要怎么用

1,c语言 自己编写的库h要怎么用你把它们放到include目录的话,得用#include 如果放在你的工程目录下 , 则用#include "xx.h" 注意<>和""的区别 <>是到指定的目录中找,即include目录 而""是在当前目录,即工程目录直接在vc6中编写好你的程序 , 然后链接生成 。obj目标文件,然后再编译就可以生成 。exe文件了!
2,c标准模板库中什么地方使用了模板多态C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言 。它支持过程序程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格 。根据Effective C++第三版第一条款的描述,现在C++由以下四个“子语言”组成:1、C子语言 。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性 , 具体请参考C++标准文献) 。2、面向对象的C++ 。C++首先作为一门面向对象的语言而闻名,这个特点在这里不再详述 。3、泛型编程语言 。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率 。C++语言发展大概可以分为三个阶段:第一阶段从80年代到1995年 。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年 , 这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性 。
3,C 标准模板库STLConstructorsstack Constructs a stack that is empty or that is a copy of a base container object. Typedefscontainer_type A type that provides the base container to be adapted by a stack.size_type An unsigned integer type that can represent the number of elements in a stack.value_type A type that represents the type of object stored as an element in a stack.Member Functionsempty Tests if the stack is empty.pop Removes the element from the top of the stack.push Adds an element to the top of the stack.size Returns the number of elements in the stack.top Returns a reference to an element at the top of the stack.MSDN就可以了 。c++的标准函数库基本上来源于c函数 , 而stl是基于c++语法而实现的一套更加高层的基本库,主要使用了c++的继承、模板、重载、友元等语言特性 。赞同那说起来那么多...【C 标准模板库的使用,c语言 自己编写的库h要怎么用】
4,C标准库标准程序库标准模板库之间是什么关系C++强大的功能来源于其丰富的类库及库函数资源 。C++标准库的内容总共在50个标准头文件中定义 。在C++开发中,要尽可能地利用标准库完成 。这样做的直接好处有:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢; ?。?)质量:标准库的都是经过严格测试的,正确性有保证; ?。?)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平; ?。?)良好的编程风格:采用行业中普遍的做法进行开发 。在C++程序设计课程中,尤其是作为第一门程序设计课程,我们注重了语法、语言的机制等方面的内容 。程序设计能力的培养有个过程,跨过基本的原理性知识直接进入到工程中的普遍做法,由于跨度决定了其难度 。再者,在掌握了基本原理的基础上,在认识标准库的问题上完全可以凭借实践 , 逐步地掌握 。标准库的学习不需要认认真真地读书,需要的是在了解概貌的情况下 , 在实践中深入 。这个任务就是要知道C++程序设计课程中不讲的,但对程序设计又很重要的这部分内容 。至少我们要能先回答出“有什么”的问题 。一、C++标准库C++标准库的内容分为10类,分别是(建议在阅读中,将你已经用过或听说过的头文件划出来):C1. 标准库中与语言支持功能相关的头文件C2. 支持流输入/输出的头文件C3. 与诊断功能相关的头文件C4. 定义工具函数的头文件C5. 支持字符串处理的头文件C6. 定义容器类的模板的头文件C7. 支持迭代器的头文件C8. 有关算法的头文件C9. 有关数值操作的头文件C10. 有关本地化的头文件C++标准库的所有头文件都没有扩展名 。C++标准库以<cname>形式的标准头文件提供 。在 <cname>形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明 。在C++中还可以使用name.h形式的标准C库头文件名 。二、标准模板库STL简介[1]STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称 。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间 。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会 。在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility> 。1、算法函数库对数据类型的选择对其可重用性起着至关重要的作用 。举例来说 , 一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比使用整型作为它的参数类性要高 。而C++通过模板的机制允许推迟对某些类型的选择,直到真正想使用模板或者说对模板进行特化的时候,STL就利用了这一点提供了相当多的有用算法 。它是在一个有效的框架中完成这些算法的——可以将所有的类型划分为少数的几类,然后就可以在模版的参数中使用一种类型替换掉同一种类中的其他类型 。STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中的每一个元素调用指定的函数 , stable_sort以你所指定的规则对序列进行稳定性排序等等 。这样一来,只要熟悉了STL之后,许多代码可以被大大的化简 , 只需要通过调用一两个算法模板,就可以完成所需要的功能并大大地提升效率 。算法部分主要由头文件<algorithm>,<numeric>和<functional>组成 。<algorithm>是所有STL头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的 , 其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等 。<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作 。<functional>中则定义了一些模板类 , 用以声明函数对象 。2、容器在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要 。经典的数据结构数量有限,但是我们常常重复着一些为了实现向量、链表等结构而编写的代码 , 这些代码都十分相似,只是为了适应不同数据的变化而在细节上有所出入 。STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持 , 这些模板的参数允许我们指定容器中元素的数据类型 , 可以将我们许多重复而乏味的工作简化 。容器部分主要由头文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>组成 。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系 。3、迭代器迭代器从作用上来说是最基本的部分,可是理解起来比前两者都要费力一些 。软件设计有一个基本原则,所有的问题都可以通过引进一个间接层来简化,这种简化在STL中就是用迭代器来完成的 。概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用 。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的 , 每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素 。迭代器部分主要由头文件<utility>,<iterator>和<memory>组成 。<utility>是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,<iterator>中提供了迭代器使用的许多方法,而对于<memory>的描述则十分的困难,它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,<memory>中的主要部分是模板类allocator , 它负责产生所有容器中的默认分配器 。三、后记对于STL的使用,也普遍存在着两种观点 。第一种认为STL的最大作用在于充当经典的数据结构和算法教材,因为它的源代码涉及了许多具体实现方面的问题 。第二种则认为STL的初衷乃是为了简化设计,避免重复劳动 , 提高编程效率,因此应该是“应用至上”的,对于源代码则不必深究 。对于初学者而言,通过分析源代码,提高对其应用的理解其意义也不同凡响 。曾经想着设计几个上机题目 , 让同学们体会一下利用STL编程 。写出一个适合初学者的,规模又不能太大 , 还要有足够引导的题目,实在是一件非常费时费力的事,加上有其他事还得应急,就将此帐欠下,日后再说 。要给同学们提的建议是,不少C++的经典教材对STL都有非常好的讲解,可以选一本去读 。在读书时,要开始学着挑着读,跳着读 , 不必从头到尾,逐页去读 。在这个阶段 , 可以首先学习迭代器utility、在C++编程中建议替代数组的vector,以及实现双向链表的list 。vector和list与本周任务1和任务2似乎有些相关 。再者,发扬我们一贯特别能实践的精神,及时找些题目或者自编题目进行实践 。5,C中标准模板库有什么作用当你需要一个map来存大量的键值对,当你需要list,当你需要set 。你就知道它是做什么用的了 。就是提供了一些最基本的库 。Constructorsstack Constructs a stack that is empty or that is a copy of a base container object. Typedefscontainer_type A type that provides the base container to be adapted by a stack.size_type An unsigned integer type that can represent the number of elements in a stack.value_type A type that represents the type of object stored as an element in a stack.Member Functionsempty Tests if the stack is empty.pop Removes the element from the top of the stack.push Adds an element to the top of the stack.size Returns the number of elements in the stack.top Returns a reference to an element at the top of the stack.MSDN就可以了 。第一种认为STL的最大作用在于充当经典的数据结构和算法教材,因为它的源代码涉及了许多具体实现方面的问题 。第二种则认为STL的初衷乃是为了简化设计,避免重复劳动,提高编程效率,因此应该是“应用至上”的,对于源代码则不必深究 。6,C Builder的功能特点C++ Builder优化的32位原码(Native Code)编译器建立在Borland公司久经考验的编译技术基础之上,提供了高度安全性、可靠性、快速性的编译优化方法 , 完全编译出原始机器码而非中间码 , 软件执行速度大大提高 。在编译和连接过程中,C++ Builder自动忽略未被修改的原代码和没有使用的函数,从而大大提高了编译和链接速度 。C++ Builder的CPU透视工具包括五个独立的小面板 , 可以对正在运行程序从内部进行深层次的了解 。另外C++ Builder还提供了一个专业开发环境所必需的命令行工具,以帮助建立C++程序或者准备编译和连接的程序进行更精细的控制 。C++ Builder可以编译所有符合ANSI/ISO标准的原代码,支持最新ANSI C++/C语言特征:模板(Templates)、异常(Exceptions)、运行类型信息(Runtime Type Information)、Namespaces(命名空间)等,另外它还可以使用标准C++库且支持标准模板库(STL),以前的所有C++/C原代码可以不经过修改,直接移植到C++ Builder环境下来 。C++ Builder完全支持32位长文件名、多线程程序设计 , 且允许程序员直接调用任何Win95和NT API函数 。C++ Builder的集成开发环境(IDE)提供了可视化窗体设计器、对象观察器、控件板、工程管理器、集成编辑器和调试器等一系列可视化快速应用程序开发(RAD)工具,让程序员可以很轻松地建立和管理自己的程序和资源 。从它们的应用程序框架(Application Frame,有时也称为对象框架)进行比较 。Visual C++采用的框架是MFC 。MFC不仅仅是人们通常理解的一个类库 。(同样,Delphi和C++Builder使用的VCL的概念也不仅仅是一个控件库 。)你如果选择了MFC,也就选择了一种程序结构,一种编程风格 。MFC早在Windows 3.x的时代就出现了,那时的Visual C++还是16位的 。经过这些年的不断补充和完善,MFC已经十分成熟 。但由于原型出现得比较早,MFC相比于VCL落后了一个时代 。尽管微软对MFC的更新没有停止,我也经常读到持“只要Windows不过时 , MFC就不会过时”之类观点的文章,但就象Inprise(原Borland)的OWL框架的淡出一样,MFC的淡出也是早晚的事 。如果MFC青春永驻,微软的开发人员也不会“私自”开发出基于ATL的WTL呀 。当然,WTL的地位不能和MFC比,它并不是微软官方支持的框架 , 封装的功能也相当有限 。但至少也反衬出了MFC存在的不足 。●1.先说下两者的背景和如何选择:c++ , 正宗的贝尔实验室的c语言基础上扩展了高级类而来,完全可以看做是c语言的升级版本,虽然由 builder公司出品,但实际上 builder公司只不过做了一个ide而已,虽然和vc“那强大的功能”比起来有限简陋,但实际上是把更大的空间留给了开发者 , 可以更自由的发挥,在物理层硬件开发领域,还是汇编和c的天下(注意这里的c指的是c、c++,和vc没什么事,原因见下文),所以如果你是正规攻读计算机技术 , 走正宗的c语言开发路线,那当然是选c++ 。vc,vc全称可视化c语言,是正宗c语言的另一个升级版本吗?答案是否定的!vc只不过引用了传统c语言的语法 , 而核心的构假和思想完全是ms的windows , 从所谓的控件、窗体、模块、api、dll、active、ieo、wmpo等等,有哪一个是从c里面扩展而来的?这些东西完全就是windows系统的一部分!不妨再看ms的整个visual系列产品 , vb、vj、vf,难道说真的都是basic、java、foxpro的升级版吗?当然不是!这些语言完全都是披了一个外皮,而里面的核心和vc如出一辙!你见过开发java的人用vj的吗?这也就是为什么vb里的api可以直接copy在vc里用;因为他们的核心构造本来就是同一个----windows!这也就是为什么vc开发的东西只能在windows里运行,脱离了win,vc开发的东西就是一堆废码 。而这一切说到最后,当然还是归功于windows的垄断了 。。。当然这也正是ms的高明之处,开个玩笑ms也在贯彻“一次开发,处处可用”的政策^_^,对ms了解多了,你就会发现 , ms的软件就是在互相调用,windows里的dll可以在vc\vb里调用,office也可以在vc\vb里调用 , ie可以,wmp也可以,只要是ms利用垄断的产品,你都可以直接在vc里调用 , 而不用你写一行代码 。。。这也就是为什么vc的功能那么强大,直接调用系统组件,和系统共用一个api, , 能不强大吗,这也正是为什么windows平台的杀毒软件都是vc写的 。所以说 , 如果你想通过速成,短期内加入到windows平台软件的开发大潮,那选vc绝对是个首?。s:微软的这种做法 , 不知忽悠了多少入门者,直到现在都有很多人搞不清vc\vb到底是一个软件还是一个语言,搞不清楚c++\vc\vc++倒底是什么关系 , 这就是微软玩的把戏 。●2.vc在游戏设计上的优势:vc在游戏开发上 , 除了上文提到的“天然”对系统的良好支持外,最大的优势当然就是:1、directx技术,目前两大3d api之一,又加上windows系统的天然支持,想不用都不行 。。。2、海量的dll库支持,人家微软把90%的代码都帮你写好了,你直接写上10%的代码来调用就行了,开发速度快,那个公司的老板都愿意 。。

    推荐阅读