我有一个C++函数,它是这样启动的
void findSolutions(vector<MOVE> & solutions, int board[], int maxPegs){
int newboard[18];
copy(begin(board), end(board), begin(newboard));
...
more code
...
}我试图将参数" board“复制到一个临时的int数组中,这样我就不会直接修改原始板。但是在copy()中,我从VSCode得到以下错误
no instance of overloaded function "begin" matches the argument list -- argument types are: (int *)如何复制从参数传入的数组?谢谢
发布于 2020-01-03 07:42:15
您不能安全地执行此操作。当传递给函数时,数组会衰减为指针。您将无法确保源数组有足够的字节可供读取(除非应用程序很简单,并且您知道调用者端发生了什么)。如果您将数组作为第一个元素的指针传递,则您也要负责传递数组的长度。假设boardLen板中的int数量,您可以执行以下操作:
void findSolutions(vector<MOVE> & solutions, int board[], size_t boardLen, int maxPegs){
int newboard[18];
memcpy(newboard, board, min(sizeof(newboard), boardLen*sizeof(int));
...memcpy一次复制一个字节,因此是boardLen*sizeof(int)。
https://stackoverflow.com/questions/59571235
复制相似问题