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
原文地址:https://www.cnblogs.com/xxiaoye/p/3669007.html