std::vector<vector<int>> body; // 存储蛇身位置for (int i = 0; i < 20; i++) { for (int j = 0; j < 30; j++) { body[i][j] = 0; } }
时间: 2024-03-18 08:40:17 浏览: 20
上述代码存在问题,如果直接使用`body[i][j] = 0`对二维vector中的元素进行赋值,会导致程序崩溃。
这是因为在这里,`body`是一个空的vector,它没有任何元素,因此对`body[i][j]`进行访问会导致访问越界的错误。
为了解决这个问题,可以在初始化`body`时指定它的大小,例如:
```
std::vector<vector<int>> body(20, vector<int>(30, 0)); // 初始化二维vector
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 30; j++) {
body[i][j] = 0; // 对元素进行赋值
}
}
```
这里使用了vector的嵌套构造函数来初始化二维vector,创建了一个20行30列的二维数组,每个元素的初值为0。然后,使用双重循环来对二维vector进行遍历,使用下标来对其元素进行赋值。
相关问题
std::vector<std::vector<int>> body; // 存储蛇身位置中std::是是啥意思
`std` 是 C++ 标准库的命名空间,表示标准库中的命名空间。在 C++ 中,类、函数、变量等都需要放在命名空间中,以避免命名冲突。在这个例子中,`std` 表示这个 vector 是 C++ 标准库中的 vector,可以存储类型为 `std::vector<int>` 的元素,即一个包含整数的 vector。因此,`std::vector<std::vector<int>>` 表示一个二维 vector,每个元素是一个包含整数的一维 vector。
#pragma once #include<vector> using namespace std; #include"Food.h" class Snake { public: Snake(); void moveSnakeByDirection(); vector getvector(); private: std::vector<std::vector<int>> body; // 存储蛇身位置 int snakelength; // 蛇身长度 int movedirection; // 蛇的方向 //1:上 3:左 //2:下; 4:右 int snaketail_x;//蛇尾的坐标值 int snaketail_y; int Head_x;//蛇头的坐标值 int Head_y; };严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0441 缺少 类模板 "std::vector" 的参数列表 贪吃蛇2 F:\大一下\实训\贪吃蛇\贪吃蛇2\Snake.h 10给出解决代码
解决方法是在 `Snake` 类中将 `vector` 声明改为 `std::vector`,并为其指定模板参数类型。修改后的代码如下:
```
#pragma once
#include <vector>
#include "Food.h"
class Snake {
public:
Snake();
void moveSnakeByDirection();
std::vector<std::vector<int>> getvector();
private:
std::vector<std::vector<int>> body; // 存储蛇身位置
int snakelength; // 蛇身长度
int movedirection; // 蛇的方向
//1:上 3:左
//2:下; 4:右
int snaketail_x;//蛇尾的坐标值
int snaketail_y;
int Head_x;//蛇头的坐标值
int Head_y;
};
```
同时,也需要在 `getvector` 函数的返回类型中为 `std::vector` 指定模板参数类型,例如 `std::vector<std::vector<int>>`。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)