如何用 C++ 编写此伪代码?函数returns两个数组到两个初始化数组

How do I write this pseudocode in C++? Function returns two arrays to two initialized arrays

我正在尝试对杆切割问题实施自下而上的方法函数,我需要使用 CLRS 教科书中的这个特定伪代码。其中有两个函数,一个以这种方式调用另一个

(r,s) = EXTENDED-BOTTOM-UP-CUT-ROD(p,n)

其中 r 和 s 是两个不同的数组。该函数还returns两个数组。我目前正在使用 C++,我已经尝试过

(r,s)=function(p,n);
[r,s]=function(p,n);
{r,s}=function(p,n);

//return statements follow similar attempts

return (r,s);
return {r,s};
return [r,s];

所有这些通常会导致错误或不正确的输出。也许我不应该为此实现使用基本数组?

您可以使用 C++17 中的元组和“结构化绑定”来有效地 return 多个值,如下所示:

#include <tuple>
#invlude <vector>

std::tuple<std::vector<int>,std::vector<int>> func_that_returns_two_vectors() {

   std::vector<int> v1 = {1, 2, 3};
   std::vector<int> v2 = {4, 5, 6};

   return {std::move(v1), std::move(v2)};

}

int main() {
    auto [v1, v2] = func_that_returns_two_vectors();
    return 0;
}

要执行类似于 C++17 之前的操作,您可以使用 std::tie.