#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8cmFuZG9tPgoKCnRlbXBsYXRlPHRlbXBsYXRlPGNsYXNzLGNsYXNzLi4uPiBjbGFzcyBDLCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgp2b2lkIG5vX2R1cGVzKEM8VCxBcmdzLi4uPiYgY29uKQp7CiAgICBhdXRvIGl0X2xhc3QgPSBzdGQ6OmVuZChjb24pOwogICAgZm9yIChhdXRvIGl0ID0gc3RkOjpiZWdpbihjb24pOyBpdCAhPSBpdF9sYXN0OyArK2l0KQogICAgICAgIGl0X2xhc3QgPSBzdGQ6OnJlbW92ZShzdGQ6Om5leHQoaXQpLCBpdF9sYXN0LCAqaXQpOwogICAgY29uLmVyYXNlKGl0X2xhc3QsIHN0ZDo6ZW5kKGNvbikpOwp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6cmFuZG9tX2RldmljZSByZDsKICAgIHN0ZDo6ZGVmYXVsdF9yYW5kb21fZW5naW5lIHJuZyhyZCgpKTsKICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPD4gZGlzdCgxLDgpOwogICAgc3RkOjpmdW5jdGlvbjxpbnQoKT4gZ2VuID0gWyZdKCl7IHJldHVybiBkaXN0KHJuZyk7fTsKCiAgICAvLyBidWlsZCByYW5kb20gdmVjdG9yCiAgICBzdGQ6OnZlY3RvcjxpbnQ+IGRhdGE7CiAgICBkYXRhLnJlc2VydmUoNDApOwogICAgc3RkOjpnZW5lcmF0ZV9uKHN0ZDo6YmFja19pbnNlcnRlcihkYXRhKSwgZGF0YS5jYXBhY2l0eSgpLCBnZW4pOwogICAgZm9yIChhdXRvIHggOiBkYXRhKQogICAgICAgIHN0ZDo6Y291dCA8PCB4IDw8ICcgJzsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgogICAgLy8gcmVtb3ZlIGR1cGVzCiAgICBub19kdXBlcyhkYXRhKTsKICAgIGZvciAoYXV0byB4IDogZGF0YSkKICAgICAgICBzdGQ6OmNvdXQgPDwgeCA8PCAnICc7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9Cg==