zoukankan      html  css  js  c++  java
  • c++ 长度可变的int数组类

    /************************************************************************
    *功能:1 数组元素个数可以在初始化该对象的时候指定
    *   2:可以动态玩数组中添加元素
    *   3:使用该类时,不用操心动态内存分配、释放问题
    * 4:能够像使用数组那样来使用动态数组类对象,如可以通过下标来访问元素。 
    ****************************************************************************/


    #include <iostream> #include <cstring> using namespace std; class CArray { private: int size; int *ptr; public: CArray(int s=0); CArray(const CArray &); void push_back(int v); CArray & operator=(const CArray &); int length(); int &operator[](int i) { return ptr[i]; } ~CArray(); }; int CArray::length() { return size; } //CArray::CArray(int s=0):size(s) CArray::CArray(int s):size(s) { if(s==0) ptr=NULL; else ptr=new int[s]; } CArray::CArray(const CArray & s)//注意参数设置为const,防止意外更改 { if(s.size==0) { size=0; ptr=NULL; return; } ptr=new int[s.size]; memcpy(ptr,s.ptr,sizeof(int)*s.size); size=s.size; } void CArray::push_back(int v) { if(ptr) { int * tempPtr=new int[size+1]; memcpy(tempPtr,ptr,size*sizeof(int)); delete [] ptr; ptr=tempPtr; } else ptr=new int[1]; ptr[size++]=v; } CArray & CArray::operator=(const CArray & s)//注意参数使用const。 { if(s.ptr==ptr) return *this; if(ptr)//一定要注意防止delete空指针 delete []ptr; if(s.ptr) { ptr=new int[s.size]; memcpy(ptr,s.ptr,s.size*sizeof(int)); size=s.size; } else { ptr=NULL; size=0; } return *this; } CArray::~CArray() { if(ptr) delete [] ptr; } int main() { CArray a; for(int i=0;i<5;i++) a.push_back(i); //a[0]=11111; // for(int i=0;i<a.length();i++) // cout<<a[i]<<" "; // cout<<"aaaa "; CArray a2,a3; a2=a; for(int i=0;i<a.length();i++) cout<<a2[i]<<" "; a2=a3; for(int i=0;i<a2.length();i++) cout<<a2[i]<<" "; cout<<endl; a[3]=100; CArray a4(a); for(int i=0;i<a4.length();i++) { cout<<a4[i]<<" "; } return 0; }
  • 相关阅读:
    python第三天
    python第二天
    python第一天
    Linux之VIM常用功能
    Linux输入输出管理
    Linux文件操作及管理
    Linux虚拟机基本操作
    JAVA堆,栈的区别,用AarrayList、LinkedList自定义栈
    mysql优化limit
    MySql五大引擎的区别以及优劣之分
  • 原文地址:https://www.cnblogs.com/cq0143/p/11300859.html
Copyright © 2011-2022 走看看