如何用 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
.
我正在尝试对杆切割问题实施自下而上的方法函数,我需要使用 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
.