菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ 教程

C++ 主页 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学 C++ 布尔值 C++ If...Else C++ Switch C++ While 循环 C++ For 循环 C++ Break/Continue C++ 数组 C++ 结构体 C++ 枚举 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载 C++ 作用域 C++ 递归

C++ 类

C++ OOP C++ 类/对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结构

C++ 数据结构与 STL C++ Vectors C++ List C++ Stacks C++ Queues C++ Deque C++ Sets C++ Maps C++ 迭代器 C++ 算法

C++ How To

C++ 两数相加 C++ 随机数

C++ 参考

C++ 参考 C++ 关键字 C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ 示例

C++ 示例 C++ 现实生活中的例子 C++ 编译器 C++ 练习 C++ 测验 C++ 证书


C++ 多维数组


多维数组

多维数组就是数组的数组。

要声明一个多维数组,请定义变量类型,指定数组名称,后跟方括号,方括号内指定主数组有多少个元素,再后跟另一组方括号,指示子数组有多少个元素。

string letters[2][4];

与普通数组一样,您可以使用数组字面量插入值——一个包含在大括号中的逗号分隔列表。在多维数组中,数组字面量中的每个元素都是另一个数组字面量。

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

数组声明中的每一组方括号都为数组添加了一个新的维度。像上面这样的数组被称为具有两个维度。

数组可以具有任意数量的维度。数组的维度越多,代码就越复杂。下面的数组具有三个维度

string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

访问多维数组的元素

要访问多维数组的元素,请为数组的每个维度指定一个索引号。

此语句访问letters数组中第一行 (0)第三列 (2)的元素值。

示例

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

cout << letters[0][2];  // 输出 "C"
自己动手试一试 »

请记住: 数组索引从 0 开始:[0] 是第一个元素,[1] 是第二个元素,以此类推。


更改多维数组的元素

要更改元素的值,请引用每个维度中元素的索引号

示例

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};
letters[0][0] = "Z";

cout << letters[0][0];  // 现在输出 "Z" 而不是 "A"
自己动手试一试 »


循环遍历多维数组

要循环遍历多维数组,您需要为数组的每个维度设置一个循环。

以下示例输出letters数组中的所有元素

示例

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 4; j++) {
    cout << letters[i][j] << "\n";
  }
}
自己动手试一试 »

此示例演示了如何循环遍历三维数组

示例

string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 2; j++) {
    for (int k = 0; k < 2; k++) {
      cout << letters[i][j][k] << "\n";
    }
  }
}
自己动手试一试 »

为什么需要多维数组?

多维数组非常适合表示网格。此示例展示了它们的一个实际用途。在以下示例中,我们使用多维数组来表示一个小型战舰游戏

示例

// 我们放置 "1" 来表示那里有一艘船。
bool ships[4][4] = {
  { 0, 1, 1, 0 },
  { 0, 0, 0, 0 },
  { 0, 0, 1, 0 },
  { 0, 0, 1, 0 }
};

// 在这些变量中跟踪玩家的击中次数和已经玩过的回合数
int hits = 0;
int numberOfTurns = 0;

// 允许玩家继续进行,直到他们击中所有四艘船
while (hits < 4) {
  int row, column;

  cout << "选择坐标\n";

  // 询问玩家输入行号
  cout << "选择一个 0 到 3 之间的行号: ";
  cin >> row;

  // 询问玩家输入列号
  cout << "选择一个 0 到 3 之间的列号: ";
  cin >> column;

  // 检查这些坐标中是否存在船
  if (ships[row][column]) {
    // 如果玩家击中了船,则将其值设置为零以移除它。
    ships[row][column] = 0;

    // 增加命中计数器
    hits++;

    // 告诉玩家他们击中了船,以及还剩多少艘船
    cout << "命中!还剩 " << (4-hits) << " 艘。\n\n";
  } else {
    // 告诉玩家他们错过了
    cout << "Miss\n\n";
  }

  // 计算玩家已经进行了多少回合
  numberOfTurns++;
}

cout << "胜利!\n";
cout << "您用了 " << numberOfTurns << " 回合赢得比赛";
运行示例 »

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持