zoukankan      html  css  js  c++  java
  • c++实现的一个MyArrayList

    MyArrayList类实现代码

      1 #pragma once
      2 
      3 template<class T>
      4 class MyArrayList
      5 {
      6 public:
      7 
      8     int Length;  //list中已有的元素的个数
      9 
     10     MyArrayList(void)
     11     {
     12         Length = 0;
     13         size = 10;
     14         index = 0;
     15         list = new T [10];
     16     }
     17 
     18     MyArrayList(int Size)
     19     {
     20         if(Size<0)
     21             Size=10;
     22         Length = 0;
     23         size = Size;
     24         index = 0;
     25         list = new T [Size];
     26     }
     27 
     28     //添加元素
     29     void Add(T value)
     30     {
     31         EnsureCapacity(index+1);
     32         list[index] = value;
     33         index++;
     34         Length = index;
     35     }
     36 
     37     //自动增长,确保添加元素时不会越界
     38     void EnsureCapacity(int paramInt)
     39     {
     40         if(paramInt>=size)
     41         {
     42             T *newlist = new T [size*3/2+1];
     43             Copy(list,newlist);
     44             delete list;
     45             list = newlist;
     46             size = size*3/2+1;
     47         }
     48     }
     49 
     50     //按照索引获取元素
     51     T Get(int paramInt)
     52     {
     53         return list[paramInt];
     54     }
     55 
     56     //按照索引删除元素
     57     void Remove(int paramInt)
     58     {
     59         paramInt= paramInt-1;
     60         for(int i=paramInt;i<Length;i++)
     61         {
     62             list[i]=list[i+1];
     63         }
     64         list[Length-1]=0;
     65         Length=Length-1;
     66     }
     67 
     68     void Remove(T paramObject,int x)
     69     {
     70         for(int i=0;i<Length;i++)
     71         {
     72             if(list[i]==paramObject)
     73                 Remove(i+1);
     74         }
     75     }
     76 
     77     T * GetList()
     78     {
     79         return list;
     80     }
     81 
     82     ~MyArrayList(void)
     83     {
     84         delete list;
     85     }
     86 
     87 private:
     88 
     89     int size; //list总长度
     90     int index; //最后一个元素索引值
     91     T *list;
     92 
     93     void Copy(T * oldArray,T * newArray)
     94     {
     95         for(int i=0;i<size;i++)
     96         {
     97             newArray[i] = oldArray[i];
     98         }
     99     }
    100 
    101 };


    测试代码:

     1 MyArrayList<int> *list = new MyArrayList<int>();
     2 
     3     list->Add(6);list->Add(7);list->Add(3);list->Add(8);list->Add(9);list->Add(5);list->Add(0);
     4     list->Add(2);list->Add(1);list->Add(4);list->Add(14);list->Add(11);list->Add(12);list->Add(10);
     5 
     6     std::cout<<"原数组 : ";
     7     for(int i=0;i<list->Length;i++)
     8     { std::cout<<list->Get(i)<<"  ";}
     9     std::cout<<std::endl;
    10 
    11     list->Remove(9,0);
    12     std::cout<<std::endl;
    13 
    14     for(int i=0;i<list->Length;i++)
    15     { std::cout<<list->Get(i)<<"  ";}
  • 相关阅读:
    HDFS镜像文件的解析与反解析
    HDFS镜像文件的解析与反解析
    Nginx将通过IP访问重定向
    Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法
    PHP个人常用函数封装
    apache禁止公网IP访问的配置
    Linux查看端口被哪个进程占用
    Nginx负载均衡配置
    Nginx反向代理配置文件
    Apache多端口配置
  • 原文地址:https://www.cnblogs.com/xiayangqiushi/p/xiayangqiushi_MyarrayList.html
Copyright © 2011-2022 走看看