C++ 的 std::set
是一個關聯容器,它包含一組唯一的對象。std::set
中的元素在插入時自動按鍵排序。鍵是元素本身,因此每個元素在 std::set
中只能出現一次。
std::set
支持多種數據類型作為其元素,包括但不限于以下幾種:
int
、float
、double
、char
、bool
等。int*
、MyClass*
等。但請注意,使用指針作為鍵時,應確保指向的對象在 std::set
的生命周期內保持有效。<
運算符(用于比較元素的大小),就可以作為 std::set
的元素。例如,可以定義一個結構體或類,并重載 <
運算符以使其能夠用作鍵。std::string
、std::vector
、std::map
等。但需要注意的是,當使用這些容器類型作為鍵時,std::set
將使用容器中的第一個元素(通常是 begin()
返回的元素)作為鍵進行比較。下面是一個簡單的示例,展示了如何使用自定義類型作為 std::set
的元素:
#include <iostream>
#include <set>
struct MyType {
int value;
MyType(int v) : value(v) {}
// 重載 '<' 運算符以用于排序
bool operator<(const MyType& other) const {
return value < other.value;
}
};
int main() {
std::set<MyType> mySet;
mySet.insert(MyType(3));
mySet.insert(MyType(1));
mySet.insert(MyType(2));
for (const auto& elem : mySet) {
std::cout << elem.value << ' ';
}
return 0;
}
輸出:
1 2 3