Search code examples
c++arraysdynamic-programmingpseudocodelist-initialization

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


I am trying to implement a bottom up approach function to the rod cutting problem and I need to use this particular pseudo-code from the CLRS textbook. In it there two functions and one calls the other in this fashion

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

Where r and s are two different arrays. The function also returns two arrays. I am currently using C++ and I've tried things such as

(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];

All these typically resulted in errors or incorrect outputs. Perhaps I shouldn't be using basic arrays for this implementation?


Solution

  • You can use tuples and "structured binding" in C++17 to return multiple values efficiently as below:

    #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;
    }
    

    To do something similar pre-C++17 you can use std::tie.