C++ Tuple::make_tuple() Function



The C++ std::tuple::make_tuple() function is used to create a tuple, a fixed size collection of the elements. It accepts arguments of any type and constructs a tuple containing those elements. It simplifies the tuple creation by decreasing the types of its arguments.

For example, std::make_tuple(1, "TP", 0.01) creates a tuple with an integer, a string, and a floating-point number.

Syntax

Following is the syntax for std::tuple::make_tuple() function.

make_tuple(Args&&... args);

Parameters

  • args − It indicates the values to be stored in the tuple.

Return Value

This function returns a tuple object constructed with the provided arguments.

Example

In the following example, we are going to construct a tuple of different data types.

#include <iostream>
#include <tuple>
int main()
{
    auto x = std::make_tuple(1, "TutorialsPoint", 0.01);
    std::cout << std::get<0>(x) << ", " << std::get<1>(x) << ", " << std::get<2>(x) << std::endl;
    return 0;
}

Output

Let us compile and run the above program, this will produce the following result −

1, TutorialsPoint, 0.01

Example

Consider the another scenario, where we are going to construct a tuple using variables.

#include <iostream>
#include <tuple>
int main()
{
    int x = 1;
    std::string y = "Welcome";
    auto myTuple = std::make_tuple(x, y);
    std::cout << " " << std::get<0>(myTuple) << ", "<< std::get<1>(myTuple) << " " <<std::endl;
    return 0;
}

Output

If we run the above code it will generate the following output −

1, Welcome 

Example

Let's look at the following example, where we are going to use the make_tuple() function to create a tuple containing pointers to existing variables.

#include <iostream>
#include <tuple>
using namespace std;
int main()
{
    int x = 20;
    double y = 0.01;
    auto a = make_tuple(&x, &y);
    x = 1;
    cout << *(get<0>(a)) << ", " << *(get<1>(a)) <<endl;
    return 0;
}

Output

Following is the output of the above code −

1, 0.01

Example

Following is the example of make_tuple() function to create a tuple containing nested tuples.

#include <iostream>
#include <tuple>
using namespace std;
int main()
{
    auto x = make_tuple(0, make_tuple(1, 2), 3);
    cout << get<0>(x) << ", " << get<1>(get<1>(x)) << ", " << get<2>(x) << endl;
    return 0;
}

Output

Output of the above code is as follows −

0, 2, 3
Advertisements