اولین راه اینه که از hash استفاده کنید و زمان insert چک کنید که آیا وجود داره یا نه .
از اون جایی که جست و جو داخل hash زمان ثابتی می گیره ( (1)O ) پس در مجموع با n تا عملیات این کار قابل انجام هست .
از ساختار std::set هم میشه استفاده کرد( که با red and black tree پیاده سازی شده)
جست و جوی هر عنصر داخل set مرتبش logn هست و چون n بار این کار انجام میشه پس در مجموع مرتبه زمانی میشه nlogn .
پس برای n های بزرگ بهتره از hash استفاده کنید.
ولی برای تعداد پایین set بهتر هست بخاطر این که hash با استفاده از یک آرایه شامل. یکسری لینک لیست پیاده سازی میشه هم این ریسایز کردن آرایه زمان گیر هست هم استفاده از link list و هم این که همه ی عناصر برای جست و جو باید hash بشن
ولی داخل set چون به شکل یک درخت ساخته میشه می تونیم صرفا به شکل یک linkedlist حسابش کنیم که هم حافظه کمتری مصرف می کنه و هم برای تعداد پایین مثلا زیر 200 تا سریع تر هم هست .(چون logn مربوط به جست و جو توی عدد های کوچیک عدد کمی میشه که احتمالا از ثابت C مربوط به مرتبه زمانی hash کمتر هست .)