| 470 | |
| 471 | template<typename Tk, typename Tv, typename To> |
| 472 | reduce_by_key_params *rbk_unique_data(const string testname, const int testSz, |
| 473 | std::function<Tk()> k_gen, |
| 474 | std::function<Tv()> v_gen) { |
| 475 | vector<Tk> keys(testSz); |
| 476 | vector<Tv> vals(testSz); |
| 477 | |
| 478 | generate(begin(keys), end(keys), k_gen); |
| 479 | generate(begin(vals), end(vals), v_gen); |
| 480 | |
| 481 | vector<Tk> okeys(begin(keys), end(keys)); |
| 482 | auto last = unique(begin(okeys), end(okeys)); |
| 483 | okeys.resize(distance(begin(okeys), last)); |
| 484 | vector<To> ovals(testSz, To(1)); |
| 485 | return new reduce_by_key_params_t<Tk, Tv, To>(keys, vals, okeys, ovals, |
| 486 | testname); |
| 487 | } |
| 488 | |
| 489 | template<typename Tk, typename Tv, typename To> |
| 490 | reduce_by_key_params *rbk_single_data(const string testname, const int testSz, |