`
anders0913
  • 浏览: 90680 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

什么是泛型编程

阅读更多
泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型编程的代表作品STL是一种高效、泛型、可交互操作的 软件组件。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基 本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。STL以迭代器(Iterators)和 容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库,容器的存在使这些算法有东西可以操作。STL包含各种泛型算法(algorithms)、泛型指针(iterators)、泛 型容器(containers)以及函数对象(function objects)。STL并非只是一些有用组件的集合,它是描述软件组件抽象需求条件的一个正规而有条理的架构。

什么是范型?

u       System.Collections.Generic命名空间包含了范型集合需要的类和接口;

u       我们在写程序的时候, 经常需要这种东西: 可变长度的Array, 比如说一个string[]
而事实上定义了一个string[]并初始化后那么它的长度就固定了, Array根本做不到. 如果非要实现这种功能, 那唯一合理的办法只有定义一个ArrayList, 这个类似于vector类型的东西可以实现可变长度的Array, 但是带来几个问题:

l         1. ArrayList里面操作的都是object类型, 这意味着如果我放一个string进去, 再当作int取出来, 这在编译阶段是不会出错的, 而在运行时才会提示转换无效

l         2. 以object方式存储时, 需要装箱和拆箱操作, 这些步骤会带来额外的性能消耗 - 而没法做到普通Array那样直接

l         3. 如果要避免前两个问题, 那么所有的需要强类型的集合类都需要分别定义, 比如XxxxCollection, 非常麻烦

u       解决办法:  

l         Collection<string> strCollection = new Collection<string>();

strCollection.Add("a");strCollection.Add("b");.....

l         这样strCollection就是我们需要的集合. 范型使Add/Remove等操作全部都是类型安全的, 以索引器访问时也是类型安全的, 这在编译阶段(对于VS来说可以包括编写代码的阶段)就可以反映出来.
而性能方面, 这里根本就没有装箱/拆箱的操作, 所以比原有ArrayList方式性能更高. 也没有像以前那样声明一个StringCollection之类的class, 代码上也简洁的多.

u       范型的特点

l         增加了编译时的类型检查;

l         减少了装箱和拆箱操作;

l         减少了运行时的类型检查;

l         Cast;

;-)

分享到:
评论

相关推荐

    什么是泛型编程&STL

    泛型编程是C++编程中的一种重要理念,它允许开发者编写独立于具体数据类型的代码,以提高代码的重用性和效率。泛型编程的核心在于模板(templates),它使得程序员能够创建能够处理不同类型数据的函数和类。这样,同...

    C++泛型编程:源起、实现与意义 免积分

    #### 什么是泛型编程? 泛型编程是一种编程范式,旨在编写可应用于多种数据类型的代码。它允许程序员编写一次性的代码,这些代码可以在运行时针对不同的数据类型进行实例化。在C++中,实现泛型编程的核心机制是模板...

    C++程序设计与实践:11-模板和泛型编程.ppt

    C++程序设计与实践:模板和泛型编程 C++ 程序设计与实践中,模板和泛型编程是非常重要的概念。模板是 C++ 的泛型机制,用来实现泛型编程。泛型编程是指不依赖于任何具体类型来编写通用代码,具体类型信息的提供是在...

    泛型编程与C标准库.pdf

    首先,让我们了解什么是泛型编程。泛型编程是一种编程范式,它允许开发者编写更加灵活、可重用的代码。泛型编程的主要特点是使用类型参数,使得代码可以适应不同的数据类型,从而提高代码的可重用性和灵活性。在Java...

    泛型编程([翻译]Java泛型编程指南(上).htm)

    泛型编程 [翻译]Java泛型编程指南(上).htm

    C++设计新思维:泛型编程与设计模式之应用(PDF)

    《C++设计新思维:泛型编程与设计模式之应用》正是这样一本书,它不仅深入探讨了C++的核心理念,还着重强调了泛型编程与设计模式的实际应用,为开发者提供了一个新的视角来审视和掌握这门语言。 泛型编程是C++设计...

    侯建的泛型编程与STL

    泛型编程是C++语言中一个强大的特性,它允许开发者编写不依赖于特定数据类型的代码,从而实现更高效、更具可复用性的程序设计。在《侯建的泛型编程与STL》这本书中,作者深入浅出地探讨了这个主题,并将其与C++的...

    泛型编程与伴随.pdf

    ### 泛型编程与伴随知识点解析 #### 一、引言与基础知识 本文档探讨了**泛型编程**中**伴随**概念的应用及其重要性。伴随最初由Daniel Kan在1958年提出,它是**范畴论**中的一个重要概念。在编程领域,尤其是**泛型...

    泛型编程源起_实现与意义_下_.pdf

    ### 泛型编程:源起、实现与意义 #### 泛型编程概述 泛型编程是一种编程范式,旨在创建可以处理多种数据类型的算法或数据结构。这种编程方式的核心在于抽象化,即从具体的数据类型中提取出通用的模式或行为,并将...

    STL与泛型编程

    泛型编程则是STL的核心思想,它允许我们编写不依赖具体数据类型的代码,从而实现代码的复用性和灵活性。 STL包括四个主要组件:容器、迭代器、函数对象(也称为仿函数)和算法。这些组件共同构建了一个强大的工具箱...

    泛型编程与STL.pdf

    泛型编程与STL.pdf

    泛型编程与STLL.rar c++经典书籍

    《泛型编程与STL》是一本深入探讨C++编程技术的专业书籍,主要围绕着泛型编程和标准模板库(STL)展开。泛型编程是C++编程中的一种高级技术,它允许开发者编写可重用且类型无关的代码,提高了代码的灵活性和效率。...

    基于Java的泛型编程

    标题和描述均聚焦于“基于Java的泛型编程”,这一主题深入探讨了Java语言中泛型编程的概念、优点以及其实现机制。以下是对这一主题的详细解析,旨在全面阐述泛型编程在Java中的应用及其重要性。 ### 泛型编程的意义...

    泛型编程与STL——侯捷译

    泛型编程与STL是C++编程领域中的一个重要主题,由知名C++专家侯捷翻译。这本书深入探讨了如何利用泛型编程的概念和技术,以及标准模板库(STL)来编写高效、可重用的代码。 泛型编程是一种编程范式,它允许程序员...

    数学和泛型编程-高效编程的奥秘(英文版pdf)原名:From_Mathematics_to_Generic_Programming

    数学和泛型编程-高效编程的奥秘(英文版pdf)原名:From_Mathematics_to_Generic_Programming,作者;Alexander A. Stepanov Daniel E. Rose

    Cpp设计新思维_泛型编程与设计模式之应用

    《Cpp设计新思维_泛型编程与设计模式之应用》这本书深入探讨了C++编程中的泛型编程和设计模式的应用,对于提升C++开发者的技术水平具有极高的价值。以下是本书涉及的一些关键知识点: 1. 泛型编程:泛型编程是C++中...

    模板和泛型编程

    模板和泛型编程ppt,学习用。

Global site tag (gtag.js) - Google Analytics