zoukankan      html  css  js  c++  java
  • 二维数组

    类似于一维数组,二维数组也是由元素的序列组成。但是这些元素可以排列在矩形网格中而不是直线上。

    原理

    在一些语言中,多维数组实际上是在内部作为一维数组实现的,而在其他一些语言中,实际上根本没有多维数组

    1. C++ 将二维数组存储为一维数组。

    下图显示了大小为 M * N 的数组 A 的实际结构:

    因此,如果我们将 A 定义为也包含 M * N 个元素的一维数组,那么实际上 A[i][j] 就等于 A[i * N + j]

    2. 在Java中,二维数组实际上是包含着 M 个元素的一维数组,每个元素都是包含有 N 个整数的数组。

    下图显示了 Java 中二维数组 A 的实际结构:

    动态二维数组

    与一维动态数组类似,我们也可以定义动态二维数组。 实际上,它可以只是一个嵌套的动态数组。 你可以自己尝试一下。

    c++代码实现:

     1 #include <iostream>
     2 
     3 template <size_t n, size_t m>
     4 void printArray(int (&a)[n][m]) {
     5     for (int i = 0; i < n; ++i) {
     6         for (int j = 0; j < m; ++j) {
     7             cout << a[i][j] << " ";
     8         }
     9         cout << endl;
    10     }
    11 }
    12 
    13 int main() {
    14     cout << "Example I:" << endl;
    15     int a[2][5];
    16     printArray(a);
    17     cout << "Example II:" << endl;
    18     int b[2][5] = {{1, 2, 3}};
    19     printArray(b);
    20     cout << "Example III:"<< endl;
    21     int c[][5] = {1, 2, 3, 4, 5, 6, 7};
    22     printArray(c);
    23     cout << "Example IV:" << endl;
    24     int d[][5] = {{1, 2, 3, 4}, {5, 6}, {7}};
    25     printArray(d);
    26 }

    这里简单认识了解一下template:

    模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。

    模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。

    每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector <int> 或 vector <string>

     详细参考:https://www.runoob.com/cplusplus/cpp-templates.html 

    虽然我也不太懂。。。

  • 相关阅读:
    去除 SQL Server 查询结果中的两边空格
    Ubuntu 中安装 Oracle 10g
    不同格式的下拉列表框
    闲来无趣,写了个简单的JavaScript验证码
    Ubuntu 任务前后台调度管理
    C#数据类型转换,Convert
    OleDbType,C#,access 对应数据类型,互相对应
    SQL 将查询出的表当做 value 插入到表中
    asp.net mvc && asp.net 页面跳转
    asp.net mvc 与 asp.net结合(asp.net mvc 技巧)
  • 原文地址:https://www.cnblogs.com/dmndxld/p/10792888.html
Copyright © 2011-2022 走看看