Open In App

Sorting of Vector of Tuple in C++ (Ascending Order)

Last Updated : 11 Jul, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

What is the Vector of a Tuple?

A tuple is an object that can hold several elements and a vector containing multiple numbers of such a tuple is called a vector of the tuple. The elements can be of different data types. The elements of tuples are initialized as arguments in the order in which they will be accessed.

CPP
// C++ program to demonstrate vector of tuple
#include <bits/stdc++.h>
using namespace std;
int main()
{
    vector<tuple<int, int, int> > v;
    v.push_back(make_tuple(10, 20, 30));
    v.push_back(make_tuple(15, 5, 25));
    v.push_back(make_tuple(3, 2, 1));

    // Printing vector tuples
    for (int i = 0; i < v.size(); i++) 
        cout << get<0>(v[i]) << " " 
             << get<1>(v[i]) << " " 
             << get<2>(v[i]) << "\n";
    
    return 0;
}

Output
10 20 30
15 5 25
3 2 1

Different ways to sort vector of tuples

Case 1 : Sorting the vector elements on the basis of first element of tuples in ascending order.

This type of sorting can be achieved using simple “sort() ” function. By default the sort function sorts the vector elements on basis of first element of tuples.

CPP
// C++ program to demonstrate sorting in
// vector of tuple according to 1st element
// of tuple
#include <bits/stdc++.h>
using namespace std;
int main()
{
    vector<tuple<int, int, int> > v;
    v.push_back(make_tuple(10, 20, 30));
    v.push_back(make_tuple(15, 5, 25));
    v.push_back(make_tuple(3, 2, 1));

    // Using sort() function to sort by 1st 
    // element of tuple
    sort(v.begin(), v.end());
    cout << "Sorted Vector of Tuple on basis"
           " of first element of tuple:\n";
    for (int i = 0; i < v.size(); i++) 
        cout << get<0>(v[i]) << " " 
             << get<1>(v[i]) << " "
             << get<2>(v[i]) << "\n";
    
    return 0;
}

Output
Sorted Vector of Tuple on basis of first element of tuple:
3 2 1
10 20 30
15 5 25

Case 2 : Sorting the vector elements on the basis of second element of tuples in ascending order.

There are instances when we require to sort the elements of vector on the basis of second elements of tuples. For that, we modify the sort() function and we pass a third argument, a call to an user defined explicit function in the sort() function.

CPP
// C++ program to demonstrate sorting in vector
// of tuple according to 2nd element of tuples
#include <bits/stdc++.h>
using namespace std;

// Comparison function to sort the vector elements
// by second element of tuples
static bool sortbysec(const tuple<int, int, int>& a, 
               const tuple<int, int, int>& b)
{
    return (get<1>(a) < get<1>(b));
}

int main()
{
    vector<tuple<int, int, int> > v;
    v.push_back(make_tuple(10, 20, 30));
    v.push_back(make_tuple(15, 5, 25));
    v.push_back(make_tuple(3, 2, 1));

    // Using sort() function to sort by 2nd element
    // of tuple
    sort(v.begin(), v.end(), sortbysec);
    cout << "Sorted Vector of Tuple on basis"
           " of Second element of tuple:\n";

    for (int i = 0; i < v.size(); i++) 
        cout << get<0>(v[i]) << " " 
             << get<1>(v[i]) << " " 
             << get<2>(v[i]) << "\n";
    return 0;
}

Output
Sorted Vector of Tuple on basis of Second element of tuple:
3 2 1
15 5 25
10 20 30

Case 3 : Sorting the vector elements on the basis of third element of tuples in ascending order.

There are instances when we require to sort the elements of vector on the basis of third elements of tuples. For that, we modify the sort() function and we pass a third argument, a call to an user defined explicit function in the sort() function.

CPP
// C++ program to demonstrate sorting in vector
// of tuple according to 3rd element of tuple
#include <bits/stdc++.h>
using namespace std;
// Driver function to sort the vector elements
// by third element of tuple
static bool sortbyth(const tuple<int, int, int>& a, 
              const tuple<int, int, int>& b)
{
    return (get<2>(a) < get<2>(b));
}

int main()
{
    vector<tuple<int, int, int> > v;
    v.push_back(make_tuple(10, 20, 30));
    v.push_back(make_tuple(15, 5, 25));
    v.push_back(make_tuple(3, 2, 1));

    // Using sort() function to sort by 3rd element
    // of tuple
    sort(v.begin(), v.end(), sortbyth);
    cout << "Sorted Vector of Tuple on basis"
            " of Third element of tuple:\n";
    for (int i = 0; i < v.size(); i++) 
        cout << get<0>(v[i]) << " " 
             << get<1>(v[i]) << " " 
             << get<2>(v[i]) << "\n";
    
    return 0;
}

Output
Sorted Vector of Tuple on basis of Third element of tuple:
3 2 1
15 5 25
10 20 30

Article Tags :
Practice Tags :

Similar Reads