C++中的set
是一個關聯容器,它包含了一組唯一的元素,并且這些元素會自動按照排序順序進行排列
set
來輕松地去除重復元素。只需將這些元素插入到set
中,它們就會被自動排序并去除重復項。#include<iostream>
#include<vector>
#include <set>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9};
std::set<int> unique_nums(nums.begin(), nums.end());
for (int num : unique_nums) {
std::cout<< num << " ";
}
return 0;
}
set
可以輕松地檢查一個元素是否存在于集合中。set
提供了find()
函數,該函數可以在對數時間內查找元素。#include<iostream>
#include <set>
int main() {
std::set<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int target = 5;
if (nums.find(target) != nums.end()) {
std::cout << "Found "<< target<< std::endl;
} else {
std::cout << "Not found "<< target<< std::endl;
}
return 0;
}
set
會自動對其中的元素進行排序。如果你需要對一組元素進行排序,可以將它們插入到set
中,然后遍歷set
以獲得已排序的元素。#include<iostream>
#include<vector>
#include <set>
int main() {
std::vector<int> nums = {9, 5, 2, 7, 3, 6, 1, 8, 4};
std::set<int> sorted_nums(nums.begin(), nums.end());
for (int num : sorted_nums) {
std::cout<< num << " ";
}
return 0;
}
set
還支持區間查詢,例如查找大于或等于某個值的第一個元素,或查找小于或等于某個值的最后一個元素。#include<iostream>
#include <set>
int main() {
std::set<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int lower_bound = 4;
int upper_bound = 6;
auto first = nums.lower_bound(lower_bound);
auto last = nums.upper_bound(upper_bound);
while (first != last) {
std::cout << *first++ << " ";
}
return 0;
}
這些只是使用set
解決實際問題的一些例子。通過使用set
,你可以輕松地處理許多需要去重、查找和排序的場景。