GrabBag is a data structure for non-deterministic element selection in C++11.
By using templates and the C++ STL, this class aims to be as versatile of a data structure as possible.
Insert an element into a GrabBag, grab a random element out of the GrabBag.
GrabBag is defined in a single header file, a simple include directive will suffice.
For a more in-depth explanation, check out the "documentation" folder which includes a thorough class explanation with code examples.
A most simple use case for a GrabBag would be simulating a lottery game.
The following example shows the usage of GrabBag inside such a lottery program.
#include "src/GrabBag.h"
#include <iostream>
#include <set>
// Select 6 numbers out of 49
int main() {
GrabBag<int> enaLottoPool;
std::set<int> pickedNumbers;
for (int i = 1; i <= 49; ++i)
enaLottoPool += i;
for (int j = 0; j < 6; ++j)
pickedNumbers.insert(enaLottoPool.grab());
// Output Picked Numbers
std::cout << "Picked Numbers: ";
for (int number : pickedNumbers)
std::cout << number << " ";
std::cout << std::endl;
}