c泛型编程
C语言编程,顾名思义,就是用C语言来进行计算机编程工作。C语言是国际上广泛流行的,很有发展前途的计算机高级语言.它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件.
⑵ 泛型的编程语言
.NET Framework 的泛型
泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型及其方法的参数类型出现。泛型方法可以将其类型参数用作其返回值的类型或者其某个形参的类型。
由于.NET Framework 泛型的类型参数之实际类型在运行时均不会被消除,运行速度会因为类型转换的次数减少而加快。
另外,使用 GetType 方法可于程序运行时得知泛型及其类型参数的实际类型,更可以运用反射编程。
允许对个别泛型的类型参数进行约束,包括以下几种形式(假设 C是泛型的类型参数, 是一般类、泛类,或是泛型的类型参数):T 是一个类。T 是一个值类型。T 具有无参数的公有建构方法。T 实现接口 I 。T 是 C ,或继承自 C 。
Java 的泛型
Java 泛型的参数只可以代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java 编译器在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快。Java 允许对个别泛型的类型参数进行约束,包括以下两种形式(假设 T 是泛型的类型参数,C 是一般类、泛类,或是泛型的类型参数):T 实现接口 I 。T 是 C ,或继承自 C 。一个泛型类不能实现Throwable接口。
C++ 的泛型(模板)
C++ 无法对泛型的类型参数进行约束。在编译时,每个被使用的封闭泛型类型(即是所有泛型参数的实际类型都已被指明的泛型)都会有独立的编码产生,编译器会在此时确保类型安全性。可是如果泛型要运用其泛型参数的某成员,而该泛型参数又不包含该成员的时候,编译器所产生的错误信息会看似与实际问题无关,增加出错的难度。
⑶ C++泛型编程和指针问题
template<typename Key>
using pfun = bool (*)(Key& k1,Key& k2);
轮子哥说的没错,然后你还需要
template<typename Key,typename Com = pfun<Key>>
⑷ 大学常说的c语言指的什么
c语言是一种面向过程的语言,是一种最接近机器硬件的高级语言,也有人称C语言为中级语言;而C++是一种面向对象的编程语言,支持面向过程的编程,也支持泛型编程,泛型编程我们都不学,它的发展速度没有面像对象的编程发展速度快,可以说C++语言是一种非常强大的语言;而C#是一种纯面向对象的高级编程!
⑸ 我是编程新手,想学习C语言,但听说就有C ,C++和C#三种,请问学哪种比较好
建议你先学C
像C++,C#以及Java都是基于C的基本语法衍生的;所以你可以认为C是基础。不过当你到达一定境界你会发现语言只是一种工具而已,只不过每种语言的编程思想不同:
C是支持面向过程编程,它的出现是为了取代汇编语言,不过它的可移植性和简洁、强大使它很快流行,至今仍在大型系统开发、游戏开发、嵌入式开发等领域占有很大市场。
C++的出现是为了在C的语言级别支持面向对象,加入了“类”的概念,它是和C语言兼容的(除极少特性)。后来随着发展,C++变成了一门庞大的语言,它同时支持面向过程,基于过程,面向对象和泛型编程,功能可谓最全。不过它的过于庞大使它难以学习。更重要的是,C++在大学里比较流行,很多学过C++的新手自以为掌握了最难懂的语言,写的程序拙劣无比、漏洞百出。以现在情况看,C++的开发效率太低,在很多领域已经被其他快速开发语言取代。
总的看来,C/C++产生较早,注重程序运行的效率,它们的宗旨是“相信程序员”。所以你既可以享受一切尽在掌握中的乐趣,又可能倍受错误的折磨。
对于C++的种种弱点,Sun的专家推出的Java力求弥补。Java的一大宗旨是“防止程序员犯错”(必然的损失是效率),Java程序比C/C++更安全,不会有那么多隐藏的漏洞,而且它是平台无关的,可以在任意支持Java虚拟机的平台运行。Java是网络时代的产物,网络编程的不错选择。
至于C#,是微软模仿Java的作品,是.Net平台的主打语言。相对于Java平台,.net平台胃口更大,它试图把其他语言包容进来。不过平台之争与你我无关,简言之,C#是类Java,它们相互学习,不断改进,都挺不错的。
不过,最重要的一点:学编程不仅仅是学习语言,更重要的是学习编程思想,学习技巧,培养能力。语言只是工具!
我个人认为新手应从C开始,踏踏实实理解面向过程编程,多读源代码,多写程序。然后接触一下面向对象,理解一下为什么要一切抽象化。
PS:永远不要理会那些语言之争,那更多的是他们的信仰之争。只有最好的程序员,没有最好的语言。一路顺风!
⑹ C++中用到泛型编程后,出现这些错误是什么意思
你用的什么编译器? 这个警告的意思是实现的这个类的名字太长了。 新的编译器应该很少见这个问题
关于警告, 如果你想认真编程,应该开4级警告,并且确保解决所有warning(这个warning没办法,只能用#pragma告诉他别报了)。 写程序留着warning只能应付老师而已,在工作里是不行的
⑺ c++STL泛型编程sort算法问题
你是指的是在sort泛型算法中带的参数有个谓词吧。谓词相当于sort中的1个参数,但是谓词本身是个函数,你这里的是个返回bool类型的函数,这个函数有2个参数,分别是对形参a和b的const引用,然后比较a和b是否相等,如果a不等于b,那么return a>b 返回的是表达式a>b的值,如果a比b大,值的true,否则值为false ,else return a>b 这里就是a==b的情况下才走到这里,肯定返回false了
在sort算法里调用如下,比如定义了1个int的vector容器
vector<int> ivec;
sort(ivec.begin(),ivec.end(),Comp);
这里记住Comp后面不能带参数了,直接写函数名字即可,在排序的时候就会根据函数的返回结果为true的进行排序,也就是说从大到小排序。
⑻ C++ 容器 和 泛型的问题
容器好比装东西的器具,迭代器就是用来指示容器中东西的位置。给你打个比方吧,现在有许多书籍放在书架上,那么书架相当于容器,可以往书架上添加、删除书籍,而迭代器相当于书籍的一个指针,可以指向任何一本书籍,通过迭代器可以取出书籍。
⑼ C语言是什么
C语言是国际上广泛流行的,很有发展前途的计算机高级语言.它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件.
早期的操作系统等系统软件主要是用汇编语言编写的(包括 UNIX操作系统在内).由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差.为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作),例如:对内存地址的操作,位操作等).人们设想能否找到一种既具有一般高级语言特性, 又具有低级语言特性的语言,集它们的优点于一身.于是,C语言就在这种情况下应运而生了.
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60. 1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序.1963年英国的剑桥大学推出了CPL(CombinedProgram- ming Language)语言.CPL语言在ALGOL 60的基础上接近了硬件一些,但规模比较大,难以实现.1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL(Basic Combined Programming Language)语言.1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言( 取 BCPL的第一个字母),并用 B语言写第一个UNIX操作系统,在PDP-7上实现. 1971年在PDP-11/20上实现了B语言,并写了UNIX操作系统.但B语言过于简单,功能有限.1972年至 1973年间,贝尔实验室的 D.M.Ritchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母).C语言既保持了BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等). 最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的.1973年,K.Thom- pson和D.M.ritchie两人合作把UNIX的90%以上用 C改写(UNIX第5版.原来的 UNIX操作系统是1969年由美国的贝尔实验室的 K.Thompson和D.M.Ritchie开发成功的,是用汇编语言写的).
后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用.直到1- 975年UNIX第6版公布后 ,C语言的突出优点才引起人们普遍注意.1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX操作系统迅速地在各种机器上实现.例如,VAX,AT&T等计算机系统都相继开发了UNIX.随着 UNIX的日益广泛使用,C语言也迅速得到推广.C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成.1978年以后,C语言已先后移植到大, 中,小,微型机上,已独立于UNIX和PDP了.现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一.
以1978年发表的UNIX第7版中的C编译程序为基础,Brian W.Kernighan和 Dennis M.Ritchie(合称K&R)合着了影响深远了名着《The C Programming Lan- guage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C.1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充 ,制定了新的标准,称为ANSI C.ANSI C比原来的标准C有了很大的发展.K&R在1988年修改了他们的经典着作《The C Progra- mming Language》 ,按照ANSI C的标准重新写了该书.1987年,ANSI C又公布了新标准--87 ANSI C .目前流行的C编译系统都是以它为基础的.
⑽ 泛型编程支持最完善的现在仍然是C++吗
C++可以兼容大部分C语言编程。
C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式
--面向对象编程、泛型编程和过程化编程