• 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; }
  • 相关阅读:
    当程序员的那些狗日日子
    程序员常犯的几个错误
    我没有帮你的义务,却有拒绝你的权力
    并发 并行 同步 异步 多线程的区别
    cookie的存取
    sqlserver 处理百万级以上的数据处理与优化
    为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname
    详细解析 nginx uri 如何匹配 location 规则
    mysql innodb 从 ibd 文件恢复表数据
    mysql 从 frm 文件恢复 table 表结构的3种方法
  • 原文地址:https://www.cnblogs.com/cq0143/p/11300859.html
Copyright © 2020-2023  润新知