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

2021-07-12 19:07

阅读:536

标签: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
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
Array::Array(){
  pt = new T[n];
  size1 = n;
}
//构造函数
template
Array::Array(int length){
  pt = new T[length];
  size1 = length;
}
//析构函数
template
Array::~Array(){
  delete [] pt;
}
//取得数组元素的个数
template
int Array::size(){
  return size1;
}
//得到指定下标的元素
template
T& Array::get(int num){
  if(num >= size1 || num 
void Array::set(T data, int num){
  if(num >= size1 || num 
T& Array::operator[](int num){
  if(num >= size1 || num 

测试程序:

#include 
#include 
#include "my_array.h"

using namespace std;

int main(){
  Array ary;
  for(int i = 0; i  asr(4);
  for(int i = 0; i 

c/c++ 模板与STL小例子系列自建Array数组

标签:clu   元素   using   for   header   temp   define   table   构造   

原文地址:https://www.cnblogs.com/xiaoshiwang/p/9545313.html


评论


亲,登录后才可以留言!