#include <iostream>
#include <vector>
#include <algorithm>
template<typename T>
struct Container
{
typedef T Type;
};
template<typename T>
T removeRepeats(T const&);
int main()
{
Container<std::vector<int>>::Type input { 1, -10, 2, 1, 3, -10, -80 };
auto results = removeRepeats(input);
for(auto const& element : results)
std::cout << element << " ";
}
template<typename T>
T removeRepeats(T const& v)
{
T results;
for(auto it = std::begin(v) ; it != std::end(v) ; ++it) {
auto foundElement = std::find(std::begin(results), std::end(results), *it);
if(foundElement == std::end(results))
results.push_back(*it);
else
std::cout << "Duplicate found: " << *it << std::endl;
}
return results;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IENvbnRhaW5lcgp7Cgl0eXBlZGVmIFQgVHlwZTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+ClQgcmVtb3ZlUmVwZWF0cyhUIGNvbnN0Jik7CgppbnQgbWFpbigpCnsKCUNvbnRhaW5lcjxzdGQ6OnZlY3RvcjxpbnQ+Pjo6VHlwZSBpbnB1dCB7IDEsIC0xMCwgMiwgMSwgMywgLTEwLCAtODAgfTsKCWF1dG8gcmVzdWx0cyA9IHJlbW92ZVJlcGVhdHMoaW5wdXQpOwoJZm9yKGF1dG8gY29uc3QmIGVsZW1lbnQgOiByZXN1bHRzKQoJCXN0ZDo6Y291dCA8PCBlbGVtZW50IDw8ICIgIjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCByZW1vdmVSZXBlYXRzKFQgY29uc3QmIHYpCnsKCVQgcmVzdWx0czsKCWZvcihhdXRvIGl0ID0gc3RkOjpiZWdpbih2KSA7IGl0ICE9IHN0ZDo6ZW5kKHYpIDsgKytpdCkgewoJCWF1dG8gZm91bmRFbGVtZW50ID0gc3RkOjpmaW5kKHN0ZDo6YmVnaW4ocmVzdWx0cyksIHN0ZDo6ZW5kKHJlc3VsdHMpLCAqaXQpOwoJCWlmKGZvdW5kRWxlbWVudCA9PSBzdGQ6OmVuZChyZXN1bHRzKSkKCQkJcmVzdWx0cy5wdXNoX2JhY2soKml0KTsKCQllbHNlCgkJCXN0ZDo6Y291dCA8PCAiRHVwbGljYXRlIGZvdW5kOiAiIDw8ICppdCA8PCBzdGQ6OmVuZGw7Cgl9CgoJcmV0dXJuIHJlc3VsdHM7Cn0K