动态数组类的设计
程序代码如下,主要结合了运算符重载的特点进行数组类的设计。实现了数组的插入,复制等功能,通过这个程序对vector容器有了一定的了解。
#include <iostream> using namespace std; class Array { private : int size; int *ptr; public : Array(int s = 0); Array(const Array &a); ~Array(); void push_back(int v); Array & operator =(const Array &a); int length() { return size; } int & Array::operator[](int i) { return ptr[i]; } }; Array::Array(int s ) { if (s == 0) ptr = NULL; else { ptr = new int[s]; } size = s; } Array::Array(const Array &a) { if (!a.ptr) { ptr = NULL; size = 0; return; } ptr = new int[a.size]; memcpy(ptr, a.ptr, sizeof(int)*a.size); size = a.size; } Array & Array::operator =(const Array &a) { if (ptr == a.ptr) return (*this); if (a.ptr == NULL) { if (ptr) delete[] ptr; ptr = NULL; size = 0; return (*this); } if (size < a.size) { delete[] ptr; ptr = new int[a.size]; memcmp(ptr, a.ptr, a.size * sizeof(int)); } else { memcmp(ptr, a.ptr, a.size * sizeof(int)); } size = a.size; return (*this); } Array::~Array() { if (ptr) delete[] ptr; } void Array::push_back(int v) { if (ptr) { int *tmp = NULL; tmp = new int[size + 1]; memcpy(tmp, ptr, sizeof(int)*size); delete[] ptr; ptr = tmp; } else ptr = new int[1]; ptr[size++] = v; } int main() { Array a; for (int i = 1; i < 3; i++) a.push_back(i); for (int i = 0; i < a.length(); i++) cout << a[i] << endl; return 0; }
本人博客已迁往 https://chenlongxiabc.github.io 欢迎访问。
博客内容均为自己编写,其中参考了相关内容。若有侵权他人请联系我,并对此表示歉意。若要转载或是其他用途,请联系我。我的邮箱diegefulan@hotmail.com