C++语言程序设计 群体的概念 群体是指由多个数据元素组成的集 合体。群体可以分为两个大类:线性群 体和非线性群体。 线性群体中的元素按位置排列有序, 可以区分为第一个元素、第二个元素等。 非线性群体不用位置顺序来标识元 素。 16
C++语言程序设计 16 群体的概念 群体是指由多个数据元素组成的集 合体。群体可以分为两个大类:线性群 体和非线性群体。 线性群体中的元素按位置排列有序, 可以区分为第一个元素、第二个元素等。 非线性群体不用位置顺序来标识元 素
C++语言程序设计 线性群体的概念 线性群体中的元素次序与其位置关 系是对应的。在线性群体中,又可按照 访问元素的不同方法分为直接访问、顺 序访问和索引访问。 在本章我们只介绍直接访问和顺序 访问。 第一个元素 第二个元素 第三个元素 最后个元素米米
C++语言程序设计 17 线性群体的概念 线性群体中的元素次序与其位置关 系是对应的。在线性群体中,又可按照 访问元素的不同方法分为直接访问、顺 序访问和索引访问。 在本章我们只介绍直接访问和顺序 访问。 … 第一个元素 第二个元素 第三个元素 最后一个元素
C++语言程序设计 数组 直 接 o 静态数组是具有固定元素个数的群体,其 访 中的元素可以通过下标直接访问。 问 缺点:大小在编译时就已经确定,在运 行时无法修改。 的 线 ·动态数组由一系列位置连续的,任意数量 相同类型的元素组成。 性 一优点:其元素个数可在程序运行时改变。 群 vector就是用类模板实现的动态数组、米米 ● 体 动态数组类模板:例9-3(Aray.hk
C++语言程序设计 18 数组 静态数组是具有固定元素个数的群体,其 中的元素可以通过下标直接访问。 – 缺点:大小在编译时就已经确定,在运 行时无法修改。 动态数组由一系列位置连续的,任意数量 相同类型的元素组成。 – 优点:其元素个数可在程序运行时改变。 vector就是用类模板实现的动态数组。 动态数组类模板:例9-3(Array.h) 直接访问的线性群体
#ifndef ARRAY H #define ARRAY_H 动态数组类模板程序 #include〈cassert template(class T>/数组类模板定义 class Array private: T*1ist;/用于存放动态分配的数组内存首地址 int size;//数组大小(元素个数) public: Array(int sz 50); /构造函数 Array(const Array<T>&a); /拷贝构造函数 Array(); //析构函数 Array<T>&operator=(const Array<T>&rhs);/重载"=“ T&operator[](inti);/重载"[]” const T&operator [(int i)const; operator T*();/重载到T*类型的转换 operator const T (const; int getSize()const; //取数组的大小 void resize(int sz); /修改数组的大小 19
#ifndef ARRAY_H #define ARRAY_H #include <cassert> template <class T> //数组类模板定义 class Array { private: T* list;//用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数) public: Array(int sz = 50); //构造函数 Array(const Array<T> &a); //拷贝构造函数 ~Array(); //析构函数 Array<T> & operator = (const Array<T> &rhs); //重载"=“ T & operator [] (int i); //重载"[]” const T & operator [] (int i) const; operator T * (); //重载到T*类型的转换 operator const T * () const; int getSize() const; //取数组的大小 void resize(int sz); //修改数组的大小 }; 19 动态数组类模板程序
C++语言程序设计 数组类模板模板的构造函数 直 //构造函数 接 template <class T> Array<T>:Array(int sz){ 访 问 /sz为数组大小(元素个数),应当非负 assert(sz >0); 的 /将元素个数赋值给变量size 线 size sZ; 性 /动态分配size个T类型的元素空间 群 list new T [size]; 体
C++语言程序设计 20 数组类模板模板的构造函数 // 构造函数 template <class T> Array<T>::Array(int sz) { //sz为数组大小(元素个数),应当非负 assert(sz >= 0); // 将元素个数赋值给变量size size = sz; //动态分配size个T类型的元素空间 list = new T [size]; } 直接访问的线性群体