二维数组
类似于一维数组,二维数组
也是由元素的序列组成。但是这些元素可以排列在矩形网格中而不是直线上。
原理
在一些语言中,多维数组实际上是在内部
作为一维数组实现的,而在其他一些语言中,实际上
根本没有多维数组
。
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
虽然我也不太懂。。。
posted on 2019-04-29 21:07 imyourterminal 阅读(461) 评论(0) 编辑 收藏 举报