xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 6KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-13
  • 語言: 其他
  • 標簽: 動態數組??

資源簡介

動態數組(Dynamic Array)是指動態分配的、可以根據需求動態增長占用內存的數組。為了實現一個動態數組類的封裝,我們需要考慮幾個問題:new/delete的使用、內存分配策略、類的四大函數(構造函數、拷貝構造函數、拷貝賦值運算符、析構函數)、運算符的重載。 DArray類與String類(面試常考)的源碼及測試代碼下載。

資源截圖

代碼片段和文件信息

/*************************************************************************
????>?File?Name:?DArray.cpp
????>?Author:?SongLee
????>?E-mail:?lisong.shine@qq.com
????>?Created?Time:?2014年07月28日?星期一?16時11分22秒
????>?Personal?Blog:?http://songlee24.github.io
?************************************************************************/
#include“DArray.h“
using?namespace?std;

void?DArray::Init()
{
m_Size?=?0;???//?默認情況下數組不包含元素
m_Max?=?1;
m_Data?=?new?double[m_Max];
}

void?DArray::Free()
{
delete?[]?m_Data;
}

bool?DArray::InvalidateIndex(int?nIndex)
{
if(nIndex>=0?&&?nIndex return?false;
else
return?true;
}

//?默認構造函數
DArray::DArray()
{
Init();
}

//?構造函數
DArray::DArray(int?nSize?double?dValue)
{
if(nSize?==?0)
Init();
else
{
m_Size?=?nSize;
m_Max?=?nSize*2;
m_Data?=?new?double[m_Max];
for(int?i=0;?i m_Data[i]=dValue;
}
}

//?拷貝構造函數
DArray::DArray(const?DArray&?arr)
{
m_Size?=?arr.m_Size;??/*復制常規成員*/
m_Max?=?arr.m_Max;
m_Data?=?new?double[m_Max];???/*復制指針指向的內容*/
memcpy(m_Data?arr.m_Data?m_Size*sizeof(double));
}

//?拷貝賦值運算符
DArray&?DArray::operator=(const?DArray&?arr)
{
if(this?==?&arr)??/*自賦值*/
return?*this;
m_Size?=?arr.m_Size;
m_Max?=?arr.m_Max;
/*?先將右側對象拷貝到臨時對象中,然后再銷毀左側對象*/?
double?*m_Temp?=?new?double[m_Max];
memcpy(m_Temp?arr.m_Data?m_Size*sizeof(double));
delete?[]?m_Data;
m_Data?=?m_Temp;

return?*this;
}

//?析構函數
DArray::~DArray()
{
Free();
}

//?打印數組
void?DArray::Print()
{
if(m_Size?==?0)
{
cout?< exit(0);
}
else
{
for(int?i=0;?i cout?< cout?< }
}

//?獲取數組大小
int?DArray::GetSize()
{
return?m_Size;
}

//?重置數組大小
void?DArray::SetSize(int?nSize)
{
if(nSize? {
for(int?i=nSize;?i m_Data[i]?=?0;
}
if(m_Size<=nSize?&&?nSize<=m_Max)??/*新增元素置0*/
{
for(int?i=m_Size;?i m_Data[i]?=?0;
}
if(nSize?>?m_Max)???/*需要重新分配空間*/
{
m_Max?=?nSize*2;
double?*temp?=?new?double[m_Max];
memcpy(temp?m_Data?m_Size*sizeof(double));
for(int?i=m_Size;?i temp[i]?=?0;
delete?[]?m_Data;
m_Data?=?temp;
}
m_Size?=?nSize;?/*設置數組大小*/
}

//?獲取指定位置元素
double?DArray::GetAt(int?nIndex)
{
if(InvalidateIndex(nIndex))
{
cout?< exit(0);
}
return?m_Data[nIndex];
}

//?設置指定位置元素的值
void?DArray::SetAt(int?nIndex?double?dValue)
{
if(InvalidateIndex(nIndex))
{
cout?< exit(0);
}
else
{
m_Data[nIndex]?=?dValue;
}
}

//?追加一個新元素到數組末尾
void?DArray::PushBack(double?dValue)
{
if(m_Size? {
m_Data[m_Size]?=?dValue;
}
else??
{
m_Max?=?m_Max*2;
double*?temp?=?new?double[m_Max];
memcpy(temp?m_Data?m_Size*sizeof(double));
delete?[]?m_Data;
m_Data?=?temp;
m_Data[m_Size]?=?dValue;
}
++m_Size;??/*數組大小加1*/
}

//?從數組中刪除一個元素
void?DArray::DeleteAt(int?nIndex)
{
if(InvalidateIndex(nIndex))
{
cout?<

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-07-29?06:53??Dynamic_Array\
?????目錄???????????0??2014-07-29?09:01??Dynamic_Array\String\
?????文件?????????940??2014-07-29?08:40??Dynamic_Array\String\Test.cpp
?????文件????????1228??2014-07-29?08:29??Dynamic_Array\String\String.h
?????文件????????2188??2014-07-29?08:30??Dynamic_Array\String\String.cpp
?????目錄???????????0??2014-07-29?06:54??Dynamic_Array\DArray\
?????文件?????????966??2014-07-28?15:15??Dynamic_Array\DArray\Test.cpp
?????文件????????1742??2014-07-28?13:59??Dynamic_Array\DArray\DArray.h
?????文件????????4389??2014-07-28?17:16??Dynamic_Array\DArray\DArray.cpp

評論

共有 條評論