generate all subsets of a vector c++ code example

Example: c++ generate all subsets

#include <vector>
#include <iostream>
#include <cmath>
using namespace std;

int main() {
	// this is the length of the array of values
	// change variable "len" accordingly
	int len = 5;
	// this is the array of values
	int values[] = {3, 4, 2, 8, 5};
	
	// all subsets will be in vector "subsets"
	vector<vector<int>> subsets;
	for (int i = 0; i < pow(2, len); i++) {
		int t = i;
		vector<int> v;
		for (int j = 0; j < len; j++) {
			if (t & 1)
				v.push_back(values[j]);
			t >>= 1;
		}
		subsets.push_back(v);
	}

	// print all of the subsets (optional)
	cout << "subsets:\n";
	for (const vector<int>& subset: subsets) {
		for (const int& value: subset)
			cout << value << " ";
		cout << "\n";
	}
	// note: an empty line will be printed at the top,
	// indicating an empty subset
}

Tags:

Cpp Example