我如何在函数中返回一个二维数组



我想知道如何在我的函数中返回一个2d数组。我的代码是这样的:

int[][] function ()
{
    int chessBoard[x][x];
    memset(chessBoard,0,x*x*sizeof(int));
    return chessBoard;      
}

我得到错误消息:"error: unexpected unqualified-id before '[' token"在我的第一行。关于如何让我的功能正常工作,有什么建议吗?

使用vector of vector代替:

template<typename T, size_t N>
std::vector<std::vector<T> > func()
{
  std::vector<std::vector<T>> data(N, std::vector<T>(N));
  return data;
}
int main ( int argc, char ** argv)
{
  std::vector<std::vector<int> > f = func<int, 10>();   
  return 0;
}

如果你使用的是c++ 11,你可以尝试使用std::array:

template<typename T, size_t N>
std::array<std::array<T, N>, N> func()
{
  return  std::array<std::array<T, N>, N>();
}
int main ( int argc, char ** argv)
{
  auto f = func<int, 10>();   
  return 0;
}

不幸的是,函数不能返回数组。这在标准中有明确规定。

c++ 11标准§8.3.5函数

函数不能有返回类型类型为数组或函数,尽管它们可能有类型指针或引用的返回类型

但是现代c++实践建议您使用STL容器来简化令人困惑的语法和内存分配。在您的特定设置中,我们可以用std::vector:

替换您的c风格数组。
std::vector< std::vector<int> > function()
{
    return std::vector< std::vector<int> >(x, std::vector<int>(x));
}

相关内容

  • 没有找到相关文章

最新更新