Skip to content

Instantly share code, notes, and snippets.

@deque-blog
Last active April 18, 2017 16:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deque-blog/e5ba91991acdbe06a045c0898c7ff12e to your computer and use it in GitHub Desktop.
Save deque-blog/e5ba91991acdbe06a045c0898c7ff12e to your computer and use it in GitHub Desktop.
template<class RollCountGenerator, class KeyGenerator, class ValueGenerator>
auto unordered_map_gen(RollCountGenerator roll_count_gen,
KeyGenerator key_gen,
ValueGenerator value_gen)
{
return [=](std::mt19937& bit_gen)
{
int count = roll_count_gen(bit_gen);
std::unordered_map<decltype(key_gen(bit_gen))
,decltype(value_gen(bit_gen))> out;
out.reserve(count);
details::repeat_n_gen(std::inserter(out, out.end()),
count, pair_gen(key_gen, value_gen), bit_gen);
return out;
};
}
template<typename KeyGenerator, typename ValueGenerator>
auto unordered_map_gen(int max_rolls,
KeyGenerator key_gen,
ValueGenerator value_gen)
{
return unordered_map_gen(int_gen(0, max_rolls), key_gen, value_gen);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment