#include <iostream>
#include <vector>
#include <algorithm>
#include <random>


template<template<class,class...> class C, typename T, typename... Args>
void no_dupes(C<T,Args...>& con)
{
    auto it_last = std::end(con);
    for (auto it = std::begin(con); it != it_last; ++it)
        it_last = std::remove(std::next(it), it_last, *it);
    con.erase(it_last, std::end(con));
}

int main()
{
    std::random_device rd;
    std::default_random_engine rng(rd());
    std::uniform_int_distribution<> dist(1,8);
    std::function<int()> gen = [&](){ return dist(rng);};

    // build random vector
    std::vector<int> data;
    data.reserve(40);
    std::generate_n(std::back_inserter(data), data.capacity(), gen);
    for (auto x : data)
        std::cout << x << ' ';
    std::cout << std::endl;

    // remove dupes
    no_dupes(data);
    for (auto x : data)
        std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}
