• 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; }
  • 相关阅读:
    第七章 第一月:开始 第二周:链接建设(2)
    基础篇 第四节 项目进度计划编辑 之 日历
    VSS2005 使用说明
    删除存储过程
    基础篇 第四节 项目进度计划编辑 之 任务关联性设定
    转载: input 的css技巧
    js: js判断回车键
    一个简单邮件发送类
    转载: php发送邮件原理
    css 小经验: 重构css的优化与技巧
  • 原文地址:https://www.cnblogs.com/cq0143/p/11300859.html
Copyright © 2020-2023  润新知