我们设计动态数组的目的在于,利用C++模板技术,消除C++语言中对数组的种种限制,如数组无法成为函数的参数或返回值(除非是指针),数组无法直接赋值等等。
1 一维动态数组
一维动态数组将一个普通数组封装成data:
来看具体实现:
2 二维动态数组
二维动态数组的实现比一维数组更简单:
- template <class T>
- class Array2D
- {
- protected:
- unsigned int numberOfRows;
- unsigned int numberOfColumns;
- Array* array;
-
- public:
- Array2D (unsigned int, unsigned int);
-
- Array const& operator[](unsigned int index) const{
- return array[index];
- }
- Array& operator[](unsigned int index){
- return array[index];
- }
- };
-
- template <class T>
- Array2D::Array2D( unsigned int m, unsigned int n ):
- numberOfRows (m),
- numberOfColumns (n),
- array (0)
- {
-
- void* raw=::operator new[](numberOfColumns * sizeof(Array));
- array=static_cast*>(raw);
-
- for(std::size_t i=0;i
- new(array+i) Array(numberOfRows);
阅读(2041) | 评论(0) | 转发(1) |