读boost::multi_array有感,多维数组实现(非类型模板,偏特化)
2015-01-21 12:07
513 查看
开发环境:
VS2002(VC7)
本文做如下简化:
1,假定所有维元素都是5。
2,不考虑const的[]。
3,由于只是熟悉原理,不考虑各种异常情况。
问题一,请实现一个一维整形数组,只需重载[]。
问题二,请实现一个二维整形数组,只需重载[]。
源码如下:
class CIntArray1
{
public:
int& operator[](int index)
{
return m_pData[index];
}
protected:
int m_pData[5];
};
class CIntArray2
{
public:
int* operator[](int index)
{
return m_pData[index];
}
protected:
int m_pData[5][5] ;
};
测试程序:
CIntArray1 arr1;
arr1[1] = -1;
int i1 = arr1[1];
CIntArray2 arr2;
arr2[1][1] = -2;
int i2 = arr2[1][1];
三,请实现一个N(2<=n<=10)维整形数组,只需重载[]
template<int iWeiShu>
class CIntArray
{
public:
CIntArray<iWeiShu-1>& operator[](int index)
{
return m_pData[index];
}
protected:
CIntArray<iWeiShu-1> m_pData[5];
};
template<>
class CIntArray<1>
{
public:
int& operator[](int index)
{
return m_pData[index];
}
protected:
int m_pData[5];
};
测试程序
CIntArray<1> a1;
a1[1] = 4;
int x1 = a1[1];
CIntArray<2> a2;
a2[1][1] = 5;
int x2 = a2[1][1];
CIntArray<3> a3;
a3[0][0][0] =9;
int x3 = a3[0][0][0];
VS2002(VC7)
本文做如下简化:
1,假定所有维元素都是5。
2,不考虑const的[]。
3,由于只是熟悉原理,不考虑各种异常情况。
问题一,请实现一个一维整形数组,只需重载[]。
问题二,请实现一个二维整形数组,只需重载[]。
源码如下:
class CIntArray1
{
public:
int& operator[](int index)
{
return m_pData[index];
}
protected:
int m_pData[5];
};
class CIntArray2
{
public:
int* operator[](int index)
{
return m_pData[index];
}
protected:
int m_pData[5][5] ;
};
测试程序:
CIntArray1 arr1;
arr1[1] = -1;
int i1 = arr1[1];
CIntArray2 arr2;
arr2[1][1] = -2;
int i2 = arr2[1][1];
三,请实现一个N(2<=n<=10)维整形数组,只需重载[]
template<int iWeiShu>
class CIntArray
{
public:
CIntArray<iWeiShu-1>& operator[](int index)
{
return m_pData[index];
}
protected:
CIntArray<iWeiShu-1> m_pData[5];
};
template<>
class CIntArray<1>
{
public:
int& operator[](int index)
{
return m_pData[index];
}
protected:
int m_pData[5];
};
测试程序
CIntArray<1> a1;
a1[1] = 4;
int x1 = a1[1];
CIntArray<2> a2;
a2[1][1] = 5;
int x2 = a2[1][1];
CIntArray<3> a3;
a3[0][0][0] =9;
int x3 = a3[0][0][0];
相关文章推荐
- Boost的动态多维数组-multi_array
- array_map实现将多维数组转换成字符串的简单方法
- array_multisort实现PHP多维数组排序示例讲解
- jquery 多维数组实现PHP的count、in_array(不区分大小写),utf8字符串(包含中文,中文字符2个字节)字节统计
- array_multisort实现PHP多维数组排序示例讲解
- 实现对多维数组按照某个键值排序的两种方法(array_multisort和array_sort)
- 简析指针与多维数组【转http://tonybai.com/2013/03/28/pointer-and-multi-dimension-array-in-c/】
- array_multisort实现PHP多维数组排序示例讲解
- array_multisort实现PHP多维数组排序
- javascript 中的数组Array及树的实现
- 一个动态多维数组的实现
- Flex与.NET互操作(十五):使用FluorineFx中的字节数组(ByteArray)实现图片上传 推荐
- C++ 地址连续的多维数组实现
- 用 Zend_Application 实现多模块 (multi-modules) 及多模板 (multi-templates) 应用程序
- PHP 多维数组排序实现代码
- boost源码剖析之:boost::multi_array
- 用array_map和array_multisort高效处理多维数组排序
- php中单个删除数组中指定的值用array_splice()实现
- 数组排序方法的性能比较(2):Array.Sort<T>实现分析
- 深思 PHP 数组遍历的差异(array_diff 的实现)