Returning Multiple Values from a C++ Function

11 May 2023 Balmiki Mandal 0 C++

Returning Multiple Values from a C++ Function

Returning multiple values from a function in C++ can be achieved through various techniques. It's a powerful feature that allows a function to provide more than one output to the caller. Here are some common methods to achieve this:

1. Using Pointers:

You can pass pointers as function parameters and modify the values pointed to by those pointers within the function. This way, the function can effectively return multiple values.

cpp
void getValues(int* a, int* b) {
    *a = 10;
    *b = 20;
}

int main() {
    int x, y;
    getValues(&x, &y);
    // x will be 10, y will be 20
    return 0;
}

output of the program is:

x will be 10, y will be 20

2. Using References:

Similar to pointers, you can use references to modify variables outside the function. This provides a cleaner syntax compared to using pointers.

cpp
void getValues(int& a, int& b) {
    a = 10;
    b = 20;
}

int main() {
    int x, y;
    getValues(x, y);
    // x will be 10, y will be 20
    return 0;
}

The output of the program is:

x will be 10, y will be 20

3. Using Structures or Classes:

You can define a structure or class to encapsulate multiple values and return an instance of that structure or class.

cpp
struct Point {
    int x;
    int y;
};

Point getValues() {
    Point p = {10, 20};
    return p;
}

int main() {
    Point result = getValues();
    // result.x will be 10, result.y will be 20
    return 0;
}

Output of this program

result.x will be 10, result.y will be 20

4. Using std::tuple (C++11 and later):

std::tuple is a C++11 feature that allows you to return multiple values in a single object.

cpp
#include <tuple>

std::tuple<int, double> getValues() {
    return std::make_tuple(10, 3.14);
}

int main() {
    auto result = getValues();
    int x = std::get<0>(result);
    double y = std::get<1>(result);
    // x will be 10, y will be 3.14
    return 0;
}

The output of the program is:

x will be 10, y will be 3.14

5. Using std::pair (for two values):

If you only need to return two values, you can use std::pair.

cpp
#include <utility>

std::pair<int, double> getValues() {
    return std::make_pair(10, 3.14);
}

int main() {
    auto result = getValues();
    int x = result.first;
    double y = result.second;
    // x will be 10, y will be 3.14
    return 0;
}
 

The output of the program is:

x will be 10, y will be 3.14

Choose the method that best suits your specific use case and programming style. Each approach has its own advantages, and the choice may depend on factors such as readability, efficiency, and the nature of the data being returned.

 

Further Reading:

For further information and examples, Please visit[ course in production]

Note: If you encounter any issues or specific errors when running this program, please let me know and I'll be happy to help debug them!

BY: Balmiki Mandal

Related Blogs

Post Comments.

Login to Post a Comment

No comments yet, Be the first to comment.