std::vector<std::vector<int>> body; // 存储蛇身位置中std::是是啥意思
时间: 2023-10-17 17:39:50 浏览: 99
`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>>`。
根据上述部分可以解决了贪吃蛇问题代码,写一段自己写代码的感受和收获。包括但不限于搞不清类Foodclass Food { private: int food_x; int food_y; public: Food(int Length,int Width); int getfood_x(); int getfood_y(); Food(); };和类Snake#pragma once #include<vector> using namespace std; #include"Food.h" class Snake { public: Snake(); void print(); void moveSnakeByDirection(); void updateWithInput(); private: std::vector<vector<int>> body;// 存储蛇身位置 int snakelength; // 蛇身长度 int movedirection; // 蛇的方向 //1:上 3:左 //2:下; 4:右 int snaketail_x;//蛇尾的坐标值 int snaketail_y; int Head_x;//蛇头的坐标值 int Head_y; };可以用面对对象方法联系起来,一点也不清楚vector的情况下,在csdn网站上找资料,使用容器vector创建2维数组,如代码const int Length = 20;//场景的高度 const int Width = 30;//场景的宽度 body = std::vector<std::vector<int>>(20, std::vector<int>(30, 0));最后做出程序内心的喜悦,仿佛煎熬全部褪去,要求详细和精准,在代码中找出例子,并进行描述
写代码的感受和收获:
在编写贪吃蛇游戏的代码过程中,我深刻体会到了面向对象编程思想的重要性。通过将游戏中的蛇和食物封装成各自的类,实现了游戏功能的模块化设计。同时,使用容器vector创建二维数组,方便地存储了游戏场景中的各个元素。这让我更加深入理解了C++中的容器和面向对象编程的思想。
在实现过程中,我遇到了一些问题,例如不清楚如何使用vector创建二维数组、如何实现蛇的移动和碰撞检测等。但是通过在CSDN等网站上查找和学习相关资料,我成功地解决了这些问题,并实现了游戏的基本功能。这种通过自学和探索解决问题的过程,让我更加自信和热爱编程。
最终,当我看到自己编写的贪吃蛇游戏可以正常运行、玩家可以操作蛇吃掉食物并不断变长、游戏会自动检测蛇与边界和自身的碰撞等情况时,我内心充满了喜悦和满足感。这种感觉就像是经历了煎熬,最终迎来了胜利,让我更加热爱编程并愿意不断学习和探索。
下面是一个使用vector创建二维数组的例子,可以在游戏场景中存储各个元素:
```c++
const int Length = 20; // 场景的高度
const int Width = 30; // 场景的宽度
std::vector<std::vector<int>> body(Length, std::vector<int>(Width, 0)); // 创建二维数组
// 对二维数组进行操作,例如获取元素、修改元素等
int element = body[row][col]; // 获取(row, col)位置的元素
body[row][col] = 1; // 将(row, col)位置的元素设置为1
```
这段代码定义了场景的高度和宽度,并使用vector容器创建了一个二维数组body。在创建时,使用了vector的构造函数,将数组初始化为指定的高度和宽度,并将所有元素初始化为0。之后可以通过数组下标的方式访问和修改二维数组的元素。
阅读全文