为什么需要STL.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为什么需要STL   容器、迭代器和通用算法是三位一体的概念,下面我们以向量类模板Vector为例[1],具体阐述它们的必要性。   template<class T>   class Vector   {   private:    T *data; //数组指针    int theSize; //数据元素个数    int theMax; //数组长度,即容量    void Error(const char* cs)const {cout<<cs<<endl; exit(1);} //错误信息报告   public:    explicit Vector(int n=0):theSize(0), theMax(n+SPARE_MAX)    {if(theMax>0) data=new T[theMax];}    Vector(const Vector v):data(NULL), theMax(0){operator=(v);}//拷贝构造函数    ~Vector(void){delete[]data;}    Vector operator=(const Vector<T> v); //复制赋值函数    T operator[](int id){return(data[id]);} //下标运算符函数    const T operator[](int index)const{return(data[id]);}//常量型下标运算符函数    bool Empty(void)const{return(theSize==0);} //判空    int Size(void)const{return(theSize);} //求数据个数    int Max(void)const{return(theMax);} //求数组容量    void Push_back(const T item);//尾插    void Pop_back(void); //尾删    const T Back(void)const;//返回尾元素的引用    const T Front(void)const;//返回起始元素的引用    void Reserve(int newMax); //扩大数组容量为newtheMax,保留原来数据    void Resize(int newSize,const T item=T());//把数据个数扩大为newtheSize,原数据保留,    //其余的值初始化为item    enum{SPARE_MAX=16};//枚举常量表示数组最小长度   };      1容器、迭代器和通用算法      向量类模板是一种容器类。容器类的对象包含一组元素,这组元素又同是一种类的对象。容器类的对象称为容器。我们学过的数组、基本顺序表都是容器类。一个整型数组和一个字符型数组,是数组容器类的两个对象,即两个容器,它们的元素类型分别是整型和字符型,因此也称为整型数组容器和字符型数组容器。容器中的元素依然可以是容器,例如基本顺序表数组,其中每一个数组元素都是基本顺序表容器。以后我们主要讨论类模板形式的容器类,例如向量类模板。       Vector<char> charV;//字符型Vector容器charV    Vector<Vector<char> > char_V;//Vector容器char_V的元素是字符型Vector容器   一般我们把非容器类型称为数值类型。整型、实型、字符型、Date类型、String都是数值类型。String之所以不是容器类,是因为它的任何对象所包含的一组元素只能是字符型,不能是其他类型。   有一些算法对每一种容器都是需要的,称为通用算法。例如,输出容器中的每一个元素,增加容器中的每一个元素的值,查找容器中最大的元素。假定给出一组数值类型、一组容器类型和一组建立在容器上的通用算法,那么用目前传统的C++方法开发,软件的数量将有多少呢?举例说明:   template<class T>   void Display(const Vector<T> c);//输出向量的元素   从现在看,容器类有多少,Display算法就有多少。可是问题还不只这样简单,如果算法是增加容器中的每一个元素的值,那么下面的通用函数就是错误的:   template<class T>   void Add(Vector<T> c,const T val)//容器中每一个元素值增加val。非法!   为什么呢?一方面,假设给双浮点型容器的元素增加一个整型值,这时,c是Vector<double>型对象,va

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档