How to generate all the possible subsets of a set ?

#include <iostream>
#include <vector>

using namespace std;

void generateSubsets(const vector<int>& inputSet, vector<int>& currentSubset, int index) {
    int n = inputSet.size();

    if (index == n) {
        cout << "Subset: { ";
        for (int i : currentSubset) {
            cout << i << " ";
        }
        cout << "}\n";
        return;
    }

    // Exclude the current element
    generateSubsets(inputSet, currentSubset, index + 1);

    // Include the current element
    currentSubset.push_back(inputSet[index]);
    generateSubsets(inputSet, currentSubset, index + 1);

    // Backtrack to exclude the current element from the current subset
    currentSubset.pop_back();
}

int main() {
    vector<int> inputSet = {1, 2, 3};
    vector<int> currentSubset;

    generateSubsets(inputSet, currentSubset, 0);

    return 0;
}