c/c++语言开发共享c/c++ 模板与STL小例子系列<一 >自建Array数组

c/c++ 模板与STL小例子系列 自建Array数组 自建的Array数组,提供如下对外接口 | 方法 | 功能描述 | | | | | Array() | 无参数构造方法,构造元素个数为模板参数个的数组 | | Array(int length) | 有参数构造方法,构造元素个数为参数lengt …


c/c++ 模板与stl小例子系列<一> 自建array数组

自建的array数组,提供如下对外接口

方法 功能描述
array() 无参数构造方法,构造元素个数为模板参数个的数组
array(int length) 有参数构造方法,构造元素个数为参数length个的数组
~array() 析构函数
int size() 返回数组中元素的个数
t& get(int num) 返回数组中指定下标的元素的引用
void set(t data, int num) 设置指定下标元素的值
t& operator [] (int num) 重载类型t的[]函数

下面代码用使用了私有元素size1,本来想用size命名,但是因为在公有方法里声明了int size()方法,编译不过去,所以起名为size1,感觉很奇怪。

my_array.h

ifndef __my_array__ #define __my_array__ template<typename t, int n> class array { public:   array();   array(int length);   ~array();   t& get(int idx);   t& operator[](int idx);   void set(t data, int idx);   int size(); private:   t* pt;   int size1;  }; //构造函数 template<typename t, int n> array<t, n>::array(){   pt = new t[n];   size1 = n; } //构造函数 template<typename t, int n> array<t, n>::array(int length){   pt = new t[length];   size1 = length; } //析构函数 template<typename t, int n> array<t, n>::~array(){   delete [] pt; } //取得数组元素的个数 template<typename t, int n> int array<t,n>::size(){   return size1; } //得到指定下标的元素 template<typename t, int n> t& array<t, n>::get(int num){   if(num >= size1 || num < 0){     //异常                                                         }   else{     return pt[num];   } } //设定指定下标元素的值 template<typename t, int n> void array<t, n>::set(t data, int num){   if(num >= size1 || num < 0){     //异常                                                         }   else{     pt[num] = data;   } } //重载元素类型的[]函数 template<typename t, int n> t& array<t, n>::operator[](int num){   if(num >= size1 || num < 0){     //异常                                                         }   else{     return *(pt + num);   } } #endif

测试程序:

#include <iostream> #include <string> #include "my_array.h"  using namespace std;  int main(){   array<int, 5> ary;   for(int i = 0; i < ary.size(); ++i){     ary.set(i * 10, i);     cout << ary.get(i) << " ";     cout << ary[i] << ", ";   }   cout << endl;    array<string, 3> asr(4);   for(int i = 0; i < asr.size(); ++i){     asr.set("aaa", i);     cout << asr.get(i) << " ";     cout << asr[i] << ", ";   }   cout << endl;   return 0; }

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/608313.html

(0)
上一篇 2021年5月15日
下一篇 2021年5月15日

精彩推荐