【问题标题】:Returning multidimensional array c++返回多维数组c ++
【发布时间】:2015-08-06 21:39:23
【问题描述】:

我想创建一个返回 C 风格多维数组的函数
int mArray[2][2]; int[][] mArray getArray();

所以这不起作用,我不知道为什么。任何帮助将不胜感激。

【问题讨论】:

  • 即使您摆弄并获得正确的语法,也不能将内置数组作为返回类型。
  • 如果您解释您的最终目标,这可能会对这个问题有所帮助。您是否尝试返回ints 的“网格”?您是否正在尝试实现与 C 兼容的接口?您是否有兴趣了解 C++ 语法中尘土飞扬的角落?
  • 我对@DrewDormann 的评论赞不绝口。即使您的要求是不可能的,也几乎总是有替代方案。

标签: c++ function multidimensional-array return


【解决方案1】:

来自[dcl.funct]:

函数不应有返回类型为数组或函数的类型,尽管它们可能有返回类型为指针或对此类事物的引用。不能有函数数组,尽管可以有函数指针数组。

但是,您可以改为返回 std::array

std::array<std::array<int, 2>, 2> getArray();

【讨论】:

    【解决方案2】:

    您不能按值返回数组,因为它们不会隐式复制(并且因为标准是这样说的)。你应该改用std::array

    std::array<std::array<int,2>,2> fun();
    std::array<std::array<int,2>,2> arr = fun();
    

    现在使用 C 数组而不是 std::array 的理由不多,最常见的可能是“因为我的老师/教授/老板这么说”。

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 2018-01-05
      • 2012-12-08
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多