Order Set

#include<bits/stdc++.h>

#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>

#define endl "\n\n"

using namespace __gnu_pbds;
using namespace std;

int main()
{
    ordered_set os;

    os.insert(10);
    os.insert(13);
    os.insert(7);
    os.insert(9);
    os.insert(8);
    os.insert(3);
    os.insert(5);
    os.insert(1);

    cout << "Order Set is :: ";
    for(auto i : os)
        cout << i << " ";
    cout << endl;

    cout << "3rd index value : " << *(os.find_by_order(3)) << endl;

    cout << "Number of value less than 8 :: " << os.order_of_key(8) << endl;

    cout << "Number of value less than 5 :: " << os.order_of_key(5) << endl;

    /// Delete value 7 if it exist in Order Set
    if(os.find(7) != os.end())
        os.erase(os.find(7));

    cout << "After Deleting 7 The Order Set is :: ";
    for(auto i : os)
        cout << i << " ";
    cout << endl;

    cout << "After Deleting 3rd index is :: " << *(os.find_by_order(3)) << endl;

    cout << "After Deleting Number of Value less than 8 :: " << os.order_of_key(8) << "\n";

    return 0;
}

For more detailsLink 

Comments