動態陣列類模板:
程式設計過程中用到了模板類、函式模板、運算子過載、建構函式、析構函式、動態記憶體分配等知識。理論上改模板能實現訪問任意型別(包括自定義)元素。
標頭檔案1:stdafx.h
#ifndef stdafx_h_included
#define stdafx_h_included
#include
#include
using
namespace std;
#endif
// stdafx_h_included
標頭檔案2:動態陣列類模板 arrs.h
#ifndef arrs_h_included
#define arrs_h_included
#include
"stdafx.h"
template
<
class
t>
class
arrs
arrs
(int num)
:nums
(num >
0? num :1)
,ptr
(num < capacity ?
new t[capacity]
:new t[num]
)arrs
(const arrs& arr)
}//析構函式
~arrs()
nums =0;
}//陣列重寫
arrs restart()
return
*this;}
else
return atemp;}}
//初始化原始陣列
void
input()
}//輸出當前陣列
void
show()
cout << endl << endl;
}//獲取陣列大小
intgetsize()
//刪除指定位置的元素
void
deleteelem
(int n)
//將要刪除的位置從小到大排序
for(
int i =
0; i < n -1;
++i)}}
for(
int i =
0; i < n; i++
) nums--
;for
(int k =
0; k < n; k++)}
}//獲取指定位置的元素
void
getelem()
//加號運算子過載
arrs operator+(
int n)
//已有元素
else
//追加元素
}return atemp;
}else
return
*this;}
}//=運算子過載
arrs&
operator
=(arrs& myarray)
this
->capacity = myarray.capacity;
this
->nums = myarray.nums;
this
->ptr =
new t[
this
->capacity]
;for
(int i =
0; i <
this
->nums; i++
)return
*this;}
//過載
t&operator
(int index)
return
this
->ptr[index];}
//任意位置增加陣列
arrs expand
(int n,
int m)
//指定位置後移
for(
int j = m; j < nums; j++
)for
(int i = m; i < m + n; i++
)return atemp;
}else
for(
int i = m; i < m + n; i++
)return
*this;}
}public
:int nums;
//當前陣列元素總數
t* ptr;
//指向當前陣列的指標
int capacity =7;
//當前陣列最大容量};
#endif
// arrs_h_included
cpp檔案:main.cpp
#include
"arrs.h"
template
<
typename dt>
void
menu
(arrs
& arr1)
;int
main()
template
<
typename dt>
void
menu
(arrs
& arr1)
case2:
case3:
case4:
default
:exit(0
);}}
執行結果
遇到的問題及解決辦法
原因:記憶體使用時越界!nums+n是開闢t型別的總個數,引用時卻達到了nums+n+n
解決辦法:將nums+n改為nums即可
動態陣列初學
要求 首先輸入乙個整數,決定了你要找的素數的範圍。然後動態分配出乙個陣列,進行素數篩。最後,根據需要輸出陣列中的素數 比如要求輸出某個範圍而不是整個陣列的素數都輸出 統計在這個範圍內素數的個數。include include intis primer int b,int arr int main p...
C 有界陣列模板類(類模板)
題目描述編寫有界陣列模板boundarray 即檢查對陣列元素下標引用並在下標越界時終止程式的執行 能夠儲存各種型別的資料。要求實現對陣列進行排序的方法sort,及對排序後的陣列進行查詢的方法search。輸入 第一行先輸入t,表示有t個測試用例 從第二行開始輸入每個測試用例的資料。首先輸入資料型別...
初學C 模板
排序與檢索 sort 排序,lower bound 檢索 lower bound a,a n,x a 用於查詢大餘或等於x的第乙個位置。template typename 我試了一下sort函式,從小到大排序,double型別的6.0,cout 輸出6 voctor名稱 eg.vector a 定義...