C++ 从函数返回数组

标签 c++ arrays function return

<分区>

我需要将一个数组读入我的函数,提取数据,然后从函数返回一个数组。

数组只会保存 2 个值。

这就是我想在概念上做的事情:

int myfunction(int my_array[1])
{
    int f_array[1];
    f_array[0] = my_array[0];
    f_array[1] = my_array[1];

    // modify f_array some more

    return f_array;
}

我已经阅读了有关指针等的内容,但感到非常困惑,希望能有一个真正基本的例子来说明如何最好地解决这个问题!

谢谢!

最佳答案

你不能在 C++ 中返回 n 内置数组。

如果您是 c++ 的新手并且对指针感到困惑,那么您真的不想使用数组(至少不想使用内置数组)。使用 std::vector<int> 相反,或者如果你只有一定数量的元素并且想要表达它(并且确实需要更好的性能)使用 boost::array<int, N> .(甚至 std::array<int, N> ,如果你在 C++11 中编程(如果你不知道你是否在 C++11 中编程,很可能你不知道)。 例如:

std::vector<int> myfunction(const std::vector<int>& my_array) {
  std::vector<int> f_array;
  for(int i = 0; i < my_array.size(); ++i)
    f_array.push_back(my_array[i]);
  return f_array;
}

boost::array<int, 2> myfunction(const boost::array<int, 2>& my_array) {
  boost::array<int, 2> f_array;
  f_array[0] = my_array[0];
  f_array[1] = my_array[1];
  return f_array;
}

然后您可以简化复制代码(查找您决定使用的任何类的构造函数和成员函数,以及 STL 算法)。示例:

std::vector<int> myfunction(const std::vector<int>& my_array) {
  std::vector<int> f_array(m_array);
  ...
  return f_array;
}

另外一点,您的代码中有一个错误:您定义了 my_array作为int my_array[1] ,这意味着它是一个只有一个元素的数组,但是您访问两个元素( my_array[0]my_array[1] ),访问 my_array[1]超出范围( int foo[N]N 项的位置,从索引 0 开始到索引 N-1 )。我假设你的意思是 int my_array[2] .

关于C++ 从函数返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8745260/

相关文章:

c++ - 根据参数调用不同函数的宏

C++ 错误 "tabulate.cc:19: error: expected primary-expression before ' ,' token"

java - 如何从数十亿个数字中高效地找出 10 个最大的数字?

Java:防止数组越界

python - 退出 Python 中的函数

c++ 查找主操作系统目录

c++ - `std::set_intersection` 的 lambda 比较器

c - 如何将 K&R 函数声明自动转换为 ANSI 函数声明?

对象属性与指针之间的转换作为函数参数

javascript - $timeout 的行为有所不同