#include <iostream>
#include <iterator>
#include <string>
template<typename Container>
Container unique_only_copy(Container container) {
auto first = std::begin(container);
auto const last = std::end(container);
if (first != last) {
auto second = std::next(first);
if (second != last) {
auto result = first;
do {
if (*first == *second) {
while (++second != last && *first == *second);
if (second == last) {
break;
}
first = second;
} else {
*result++ = *first++;
}
if (++second == last) {
*result++ = *first;
}
} while (second != last);
container.erase(result, last);
}
}
return container;
}
int main() {
std::cout << "'" << unique_only_copy(std::string("")) << "'" << std::endl;
std::cout << "'" << unique_only_copy(std::string("a")) << "'" << std::endl;
std::cout << "'" << unique_only_copy(std::string("ab")) << "'" << std::endl;
std::cout << "'" << unique_only_copy(std::string("aa")) << "'" << std::endl;
std::cout << "'" << unique_only_copy(std::string("aaa")) << "'" << std::endl;
std::cout << "'" << unique_only_copy(std::string("abb")) << "'" << std::endl;
std::cout << "'" << unique_only_copy(std::string("aab")) << "'" << std::endl;
std::cout << "'" << unique_only_copy(std::string("aabcc")) << "'" << std::endl;
std::cout << "'" << unique_only_copy(std::string("abbc")) << "'" << std::endl;
}