std::set
是 C++ 標準庫中的一個關聯容器,它包含一組唯一的元素。std::set
中的元素自動按鍵(key)排序,這里的鍵就是元素本身。std::set
通常使用紅黑樹實現,盡管具體實現可能因庫而異。
std::set
的去重原理主要基于以下幾點:
std::set
的每個元素只能出現一次,重復的元素會被自動忽略。這是因為 std::set
的元素是通過鍵來唯一標識的,而鍵不能有重復。std::set
中的元素按鍵自動排序。這意味著在插入新元素時,std::set
會自動調整其內部結構以保持元素的排序。這有助于加快查找、刪除和插入操作的速度。std::set
通常使用平衡二叉搜索樹(如紅黑樹)作為其底層數據結構。這種數據結構可以確保在插入和刪除元素時,樹的高度保持在對數級別,從而保證了操作的高效性(O(log n))。當你向 std::set
插入一個元素時,它會首先檢查該元素是否已經存在于集合中。如果存在,則不會插入;如果不存在,則會將元素插入到適當的位置以保持排序。這個過程涉及到在底層的平衡二叉搜索樹中查找和插入元素,因此去重和排序的效率較高。