错误 C2440:'return':无法从 'int [2]' 转换为 'int (&&)[2]'
Error C2440: 'return' : cannot convert from 'int [2]' to 'int (&&)[2]'
我有一段时间没有编程了,所以我的代码可能有点马虎。该程序唯一做的就是创建一个 4x4 布尔网格,只有左上角的值为真。然后它使用 checkAdjacentTiles 运行它,应该 return 接触它的瓷砖(右边的一个和下面的一个)。我得到一个错误。我感觉这与我的矢量有关:std::vector<int[2]> checkAdjacentTiles(bool[4][4]);
,因为 int [2]。感谢您的帮助!
#include <stdio.h>
#include <vector>
std::vector<int[2]> checkAdjacentTiles(bool[4][4]);
int main() {
bool grid[4][4];
grid[0][0] = 1;
std::vector<int[2]> temp = checkAdjacentTiles(grid);
for (int i = 0; i < (int)temp.size(); i++) {
printf("(%i, %i)\n", temp[i][0], temp[i][1]);
}
getchar();
return 0;
}
std::vector<int[2]> checkAdjacentTiles(bool checkGrid[4][4]) {
int relAdjacentSides[4][2] = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } };
std::vector<int[2]> adjacentSides;
for (int x = 0; x < 4; x++) {
for (int y = 0; y < 4; y++) {
for (int i = 0; i < 4; i++) {
if (x + relAdjacentSides[i][0] >= 0 && x + relAdjacentSides[i][0] < 4) {
if (y + relAdjacentSides[i][1] >= 0 && y + relAdjacentSides[i][1] < 4) {
if (!checkGrid[x + relAdjacentSides[i][0], y + relAdjacentSides[i][1]]) {
bool stop = 0;
for (int v = 0; v < (int)adjacentSides.size(); v++) {
if (adjacentSides[v][0] == x + relAdjacentSides[i][0] && adjacentSides[v][1] == y + relAdjacentSides[i][1]) {
stop = 1;
break;
}
}
if (!stop) {
adjacentSides.push_back({ x + relAdjacentSides[i][0], y + relAdjacentSides[i][1] });
}
}
}
}
}
}
}
return adjacentSides;
}
出于某种原因,我无法在向量中使用 int[2]
。我最终改用 std::pair<int,int>
并且效果很好。谢谢 jhnnslschnr。
我有一段时间没有编程了,所以我的代码可能有点马虎。该程序唯一做的就是创建一个 4x4 布尔网格,只有左上角的值为真。然后它使用 checkAdjacentTiles 运行它,应该 return 接触它的瓷砖(右边的一个和下面的一个)。我得到一个错误。我感觉这与我的矢量有关:std::vector<int[2]> checkAdjacentTiles(bool[4][4]);
,因为 int [2]。感谢您的帮助!
#include <stdio.h>
#include <vector>
std::vector<int[2]> checkAdjacentTiles(bool[4][4]);
int main() {
bool grid[4][4];
grid[0][0] = 1;
std::vector<int[2]> temp = checkAdjacentTiles(grid);
for (int i = 0; i < (int)temp.size(); i++) {
printf("(%i, %i)\n", temp[i][0], temp[i][1]);
}
getchar();
return 0;
}
std::vector<int[2]> checkAdjacentTiles(bool checkGrid[4][4]) {
int relAdjacentSides[4][2] = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } };
std::vector<int[2]> adjacentSides;
for (int x = 0; x < 4; x++) {
for (int y = 0; y < 4; y++) {
for (int i = 0; i < 4; i++) {
if (x + relAdjacentSides[i][0] >= 0 && x + relAdjacentSides[i][0] < 4) {
if (y + relAdjacentSides[i][1] >= 0 && y + relAdjacentSides[i][1] < 4) {
if (!checkGrid[x + relAdjacentSides[i][0], y + relAdjacentSides[i][1]]) {
bool stop = 0;
for (int v = 0; v < (int)adjacentSides.size(); v++) {
if (adjacentSides[v][0] == x + relAdjacentSides[i][0] && adjacentSides[v][1] == y + relAdjacentSides[i][1]) {
stop = 1;
break;
}
}
if (!stop) {
adjacentSides.push_back({ x + relAdjacentSides[i][0], y + relAdjacentSides[i][1] });
}
}
}
}
}
}
}
return adjacentSides;
}
出于某种原因,我无法在向量中使用 int[2]
。我最终改用 std::pair<int,int>
并且效果很好。谢谢 jhnnslschnr。