Dlaczego skazujesz się na większą złożoność obliczeniową niż to jest konieczne? To niewiele da jeśli będziesz optymalizował niewydajny algorytm który ma gromadzić i wielokrotnie przeglądać kontener (lub sortować ... bo pewnie na to zaraz wpadniesz :-/). Użyj std::unordered_set lub std::set (w ostateczności). Będziesz miał elementy unikalne i wystarczy że zwrócisz tylko wielkość tego kontenera.
Zerknij jak już sam zrobisz użyjesz std::unordered_set/std::set :
#include <unordered_set>
#include <iostream>
#include <algorithm>
#include <iterator>
int main() {
size_t lim;
std::unordered_set<int> mySet;
using istr = std::istream_iterator<int>;
using iiter = std::insert_iterator<decltype(mySet)>;
std::cin >> lim;
std::copy_n(istr(std::cin), lim, iiter(mySet, mySet.begin()));
std::cout << mySet.size();
}