Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以在C+中返回类似的内容+;?_C++_Arrays_Return - Fatal编程技术网

C++ 是否可以在C+中返回类似的内容+;?

C++ 是否可以在C+中返回类似的内容+;?,c++,arrays,return,C++,Arrays,Return,我正在做一个国际象棋程序,想做一个函数来检查棋子可以移动的方向 例如,如果工件是皇后,该函数将检查皇后在撞击板边缘或撞到另一工件之前在每个方向上可以移动多远。我想返回一些东西,每个方向都有一个数值,北,东北,南,等等 像这样的 返回[1,2,3,4,5,6,1,2] 我可以将这样的各种数字返回到数组吗?您可以返回一个结构,您可以返回一个指向数组的指针(如果您使用malloc在堆上声明它)…您不能从函数返回数组,但可以返回一个向量,在任何情况下,您都应该使用该数组而不是数组。< P>可以通过引用引

我正在做一个国际象棋程序,想做一个函数来检查棋子可以移动的方向

例如,如果工件是皇后,该函数将检查皇后在撞击板边缘或撞到另一工件之前在每个方向上可以移动多远。我想返回一些东西,每个方向都有一个数值,北,东北,南,等等 像这样的

返回[1,2,3,4,5,6,1,2]


我可以将这样的各种数字返回到数组吗?

您可以返回一个结构,您可以返回一个指向数组的指针(如果您使用malloc在堆上声明它)…

您不能从函数返回数组,但可以返回一个向量,在任何情况下,您都应该使用该数组而不是数组。

< P>可以通过引用引用传统参数来返回C++函数中的一个以上值,可以用于返回值。
另一种效率较低但可能更“漂亮”且在Java中经常使用的替代方法是创建一个数据结构来保存需要返回的参数,并返回一个具有此类值的对象。

如果使用一个映射,其中键是方向,值是每个方向上允许的数字,那该怎么办?您可以创建一个简单的枚举来表示各个方向:

std::map<Direction, unsigned int>

等等。

返回一个元组向量,每个元组包含两个整数:块可以在x和y方向上分别移动的平方数


这样做将允许您表示骑士的移动、城堡等。

是的,但更好的解决方案是返回一个
类AllowedMoves
。此类的数据成员将是私有的,测试函数(例如,
boolcanmoveto(int row,int col)const;
)将是公共的。如果以后发现需要另一种内部数据格式,则可以在类内修复该格式,而无需在任何地方进行更改。

erm。。。对我拿到分数了吗?也许你应该发布更多关于骑士移动的“方向”的信息?@Rob Kennedy:顺时针方向:NNE、ENE、ESE、SSE、SSW、WSW、WNW、NNW。它在这些方向上可以移动的距离是0或0√5是的,@MSalters,但这意味着一个简单的八元素整数数组不行,我只是想确定Fro是否考虑过这一点。它可能需要16个,除非我们假设骑士的方向旋转了22.5度。总的来说,它似乎不是正确的数据结构。您可以返回
std::array
boost::array
,当编译时大小固定且已知时,这比
std::vector
更合适。
NORTH -> 1
NORTHEAST -> 2
EAST -> 3