zoukankan      html  css  js  c++  java
  • 2014金山笔试_编写一个数组类 MyVector

      1 //编写一个数组类 MyVector,数组内容可以动态扩充,实现构造,析构,赋值操作符重载,插入,删除,获取元素个数,获取数组容量(不可以使用STL等的容器类,不能使用
      2 //不连续的存储空间)  
      3 #include<iostream>
      4 using namespace std;
      5 class MyVector
      6 {
      7 public:
      8     MyVector()
      9     {
     10           size=0;
     11        val=new int[count];
     12          iterator=val;
     13         start=val;
     14         end=val;
     15         Counts=count;
     16     }
     17     MyVector(int N)
     18     {
     19          size=0;
     20       N=N/count+1;
     21       val=new int[count*N];
     22       iterator=val;
     23       start=val;
     24       end=val;
     25       Counts=count*N;
     26     }
     27     ~MyVector()
     28     {
     29        delete[] val;
     30     }
     31     MyVector & operator=(const MyVector & vec)
     32     {
     33         delete[] val;
     34          val=vec->val;
     35          size=vec->size;
     36          Counts=vec->Counts;
     37          start=vec->start;
     38          end=vec->end;
     39     }
     40     void Insert(int num)
     41     {
     42        size++;
     43        if(size>Counts)
     44        {
     45            Counts=Counts+count;
     46           newval=new int[Counts];
     47          for(int i=0;i<size-1;i++)
     48          {
     49             newval[i]=val[i];
     50          }
     51              delete(val);
     52             val=newval;
     53             start=val;
     54             end=val+size-1;
     55        }
     56        *end=num;
     57        end++;
     58     }
     59     int Delete()
     60     {
     61          size--;
     62          end--;
     63          return *end;
     64     }
     65     int Size()
     66     {
     67         return size;
     68     }
     69     int Count()
     70     {
     71         return Counts;
     72     }
     73       int *val;
     74       int *start;
     75       int *end;
     76 private:
     77  static    const int count=10;
     78           int Counts;
     79           int *iterator;
     80           int size;
     81           int *newval;
     82 };
     83 
     84 int main()
     85 {  
     86    MyVector* vec=new MyVector();// MyVector* vec=new MyVector(15);
     87    MyVector* vec2=new MyVector;
     88    int k;
     89     for(int i=1;i<8;i++)
     90     {
     91       vec->Insert(i);
     92     }
     93     cout<<"插入前:";
     94     for(int i=0;i<vec->Size();i++)
     95     {
     96       cout<<vec->val[i]<<" ";
     97     }
     98     cout<<endl;
     99     cout<<"起始值"<<*vec->start;
    100     cout<<" ,结束值"<<*(vec->end-1);
    101     cout<<" ,数量"<<vec->Size();
    102     cout<<" ,容量"<<vec->Count()<<endl;
    103 
    104 
    105     vec->Insert(50);
    106         cout<<"插入后:";
    107  for(int i=0;i<vec->Size();i++)
    108     {
    109       cout<<vec->val[i]<<" ";
    110     }
    111      cout<<endl;
    112     cout<<"起始值"<<*vec->start;
    113     cout<<" ,结束值"<<*(vec->end-1);
    114     cout<<"数量"<<vec->Size();
    115     cout<<"容量"<<vec->Count()<<endl;
    116 
    117      
    118 
    119 
    120     for(int i=100;i<800;i+=100)
    121     {
    122       vec->Insert(i);
    123     }
    124         cout<<"插入后:";
    125  for(int i=0;i<vec->Size();i++)
    126     {
    127       cout<<vec->val[i]<<" ";
    128     }
    129      cout<<endl;
    130     cout<<"起始值"<<*vec->start;
    131     cout<<" ,结束值"<<*(vec->end-1);
    132     cout<<" ,数量"<<vec->Size();
    133     cout<<" ,容量"<<vec->Count()<<endl;
    134     k=vec->Delete();
    135     cout<<"删除一个后:";
    136     cout<<"起始值"<<*vec->start;
    137     cout<<" ,结束值"<<*(vec->end-1);
    138     cout<<" ,数量"<<vec->Size();
    139     cout<<" ,容量"<<vec->Count();
    140     cout<<" ,删除的元素为:"<<k<<endl;
    141 
    142     vec2=vec;
    143     cout<<"给别个赋值后:";
    144      for(int i=0;i<vec2->Size();i++)
    145     {
    146       cout<<vec2->val[i]<<" ";
    147     }
    148      cout<<endl;
    149     cout<<"起始值"<<*vec2->start;
    150     cout<<" ,结束值"<<*(vec2->end-1);
    151     cout<<"数量"<<vec2->Size();
    152     cout<<"容量"<<vec2->Count();
    153     cout<<endl;
    154     
    155     
    156     system("pause");
    157     return 0;
    158 }

    采用模板类编程为:

      1 //编写一个数组类 MyVector,数组内容可以动态扩充,实现构造,析构,赋值操作符重载,插入,删除,获取元素个数,获取数组容量(不可以使用STL等的容器类,不能使用
      2 //不连续的存储空间)  
      3 #include<iostream>
      4 using namespace std;
      5 template<class T>
      6 class MyVector
      7 {
      8 public:
      9     MyVector()
     10     {
     11           size=0;
     12        val=new T[count];
     13          iterator=val;
     14         start=val;
     15         end=val;
     16         Counts=count;
     17     }
     18     MyVector(int N)
     19     {
     20          size=0;
     21       N=N/count+1;
     22       val=new int[count*N];
     23       iterator=val;
     24       start=val;
     25       end=val;
     26       Counts=count*N;
     27     }
     28     ~MyVector()
     29     {
     30        delete[] val;
     31     }
     32     MyVector & operator=(const MyVector & vec)
     33     {
     34         delete[] val;
           val* = new T[vec.size()];
    36 size=vec->size; 37 Counts=vec->Counts; 38 start=val; 39 end=val+vec.size(); 40 } 41 void Insert(int num) 42 { 43 size++; 44 if(size>Counts) 45 { 46 Counts=Counts+count; 47 newval=new T[Counts]; 48 for(int i=0;i<size-1;i++) 49 { 50 newval[i]=val[i]; 51 } 52 delete(val); 53 val=newval; 54 start=val; 55 end=val+size-1; 56 } 57 *end=num; 58 end++; 59 } 60 int Delete() 61 { 62 size--; 63 end--; 64 return *end; 65 } 66 int Size() 67 { 68 return size; 69 } 70 int Count() 71 { 72 return Counts; 73 } 74 T *val; 75 T *start; 76 T *end; 77 private: 78 static const int count=10; 79 int Counts; 80 T *iterator; 81 int size; 82 T *newval; 83 }; 84 85 int main() 86 { 87 MyVector<char>* vec=new MyVector<char>();// MyVector* vec=new MyVector(15); 88 MyVector<char>* vec2=new MyVector<char>; 89 char k; 90 for(int i=1;i<8;i++) 91 { 92 vec->Insert(i+96); 93 } 94 cout<<"插入前:"; 95 for(int i=0;i<vec->Size();i++) 96 { 97 cout<<vec->val[i]<<" "; 98 } 99 cout<<endl; 100 cout<<"起始值"<<*vec->start; 101 cout<<" ,结束值"<<*(vec->end-1); 102 cout<<" ,数量"<<vec->Size(); 103 cout<<" ,容量"<<vec->Count()<<endl; 104 105 106 vec->Insert('-'); 107 cout<<"插入后:"; 108 for(int i=0;i<vec->Size();i++) 109 { 110 cout<<vec->val[i]<<" "; 111 } 112 cout<<endl; 113 cout<<"起始值"<<*vec->start; 114 cout<<" ,结束值"<<*(vec->end-1); 115 cout<<"数量"<<vec->Size(); 116 cout<<"容量"<<vec->Count()<<endl; 117 118 119 120 121 for(int i=1;i<8;i++) 122 { 123 vec->Insert(i+64); 124 } 125 cout<<"插入后:"; 126 for(int i=0;i<vec->Size();i++) 127 { 128 cout<<vec->val[i]<<" "; 129 } 130 cout<<endl; 131 cout<<"起始值"<<*vec->start; 132 cout<<" ,结束值"<<*(vec->end-1); 133 cout<<" ,数量"<<vec->Size(); 134 cout<<" ,容量"<<vec->Count()<<endl; 135 k=vec->Delete(); 136 cout<<"删除一个后:"; 137 cout<<"起始值"<<*vec->start; 138 cout<<" ,结束值"<<*(vec->end-1); 139 cout<<" ,数量"<<vec->Size(); 140 cout<<" ,容量"<<vec->Count(); 141 cout<<" ,删除的元素为:"<<k<<endl; 142 143 vec2=vec; 144 cout<<"给别个赋值后:"; 145 for(int i=0;i<vec2->Size();i++) 146 { 147 cout<<vec2->val[i]<<" "; 148 } 149 cout<<endl; 150 cout<<"起始值"<<*vec2->start; 151 cout<<" ,结束值"<<*(vec2->end-1); 152 cout<<"数量"<<vec2->Size(); 153 cout<<"容量"<<vec2->Count(); 154 cout<<endl; 155 156 157 system("pause"); 158 return 0; 159 }

    val
  • 相关阅读:
    PHP 原型模式
    PHP 观察者模式
    PHP 策略模式
    PHP 适配器模式
    PHP static静态属性和静态方法
    PHP中this,self,parent三个关键字
    PHP 单例模式
    git修改账号密码-命令行
    微信开发SDK推荐
    Java并发编程:线程池的使用
  • 原文地址:https://www.cnblogs.com/xxiaoye/p/3669007.html
Copyright © 2011-2022 走看看