c/c++ 模板與STL小例子系列<一 >自建Array數組

來源:互聯網
上載者:User

標籤:clu   元素   using   for   header   temp   define   table   構造   

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;}

c/c++ 模板與STL小例子系列<一 >自建Array數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.