读boost::multi_array有感,多维数组实现(非类型模板,偏特化)

简介: 读boost::multi_array有感,多维数组实现(非类型模板,偏特化)

开发环境:

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];
相关文章
|
6月前
|
Rust 索引 Windows
Rust 原始类型之数组array内置方法
Rust 原始类型之数组array内置方法
228 0
Rust 原始类型之数组array内置方法
|
6月前
|
存储 JavaScript 索引
TypeScript 中的 Array 类型是什么样的?
TypeScript 中的 Array 类型是什么样的?
87 1
|
6月前
|
SQL IDE Java
MyBatis【问题 01】mapper传入array\collection\list类型的参数时报BindingException:Parameter ‘xx‘ not found问题复现及解决
MyBatis【问题 01】mapper传入array\collection\list类型的参数时报BindingException:Parameter ‘xx‘ not found问题复现及解决
202 0
|
JavaScript
ES6对String字符串、Array数组、Number数字、Object对象 类型做了哪些升级优化
ES6对String字符串、Array数组、Number数字、Object对象 类型做了哪些升级优化
108 0
|
JavaScript 前端开发
Array类型(apply)
Array类型(apply)
70 0
|
JavaScript 前端开发
Array类型【call】
Array类型【call】
73 0
|
JavaScript 前端开发 索引
Array类型【find】
Array类型【find】
96 0
|
Web App开发 JavaScript 前端开发
学习Array类型看这一篇就够了(Array类型特点,Array原型方法,浏览器sort底层实现,深浅拷贝)
学习Array类型看这一篇就够了(Array类型特点,Array原型方法,浏览器sort底层实现,深浅拷贝)
135 0
|
29天前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
1月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。

热门文章

最新文章