91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++ set函數在算法設計中的應用技巧

c++
小樊
82
2024-09-10 19:59:32
欄目: 編程語言

在C++中,set是一個關聯容器,它包含一組唯一的元素,并按照特定的排序規則進行存儲。set在算法設計中的應用主要體現在以下幾個方面:

  1. 去重:由于set中的元素都是唯一的,因此可以使用set來實現去重操作。將一個容器中的元素插入到set中,然后再從set中取出元素,這樣就可以得到一個去重后的序列。
#include<iostream>
#include<vector>
#include <set>
using namespace std;

int main() {
    vector<int> nums = {1, 2, 3, 4, 4, 5, 6, 6, 7};
    set<int> s(nums.begin(), nums.end());
    for (int num : s) {
        cout<< num << " ";
    }
    return 0;
}
  1. 查找:set提供了高效的查找操作,可以在O(log n)的時間復雜度內完成查找。如果需要在一個有序的序列中查找某個元素,可以使用set來實現。
#include<iostream>
#include <set>
using namespace std;

int main() {
    set<int> s = {1, 2, 3, 4, 5, 6, 7};
    int target = 4;
    if (s.find(target) != s.end()) {
        cout << "Found "<< target<< endl;
    } else {
        cout << "Not found"<< endl;
    }
    return 0;
}
  1. 區間查詢:set還支持區間查詢,可以在O(log n)的時間復雜度內找到某個區間內的所有元素。例如,可以使用lower_boundupper_bound函數來查找一個區間內的所有元素。
#include<iostream>
#include <set>
using namespace std;

int main() {
    set<int> s = {1, 2, 3, 4, 5, 6, 7};
    int lower = 3, upper = 6;
    auto it_low = s.lower_bound(lower);
    auto it_up = s.upper_bound(upper);
    for (auto it = it_low; it != it_up; ++it) {
        cout << *it << " ";
    }
    return 0;
}
  1. 最大/最小值:set中的第一個元素是最小值,最后一個元素是最大值。可以通過*s.begin()*s.rbegin()來獲取最小值和最大值。
#include<iostream>
#include <set>
using namespace std;

int main() {
    set<int> s = {1, 2, 3, 4, 5, 6, 7};
    cout << "Min: " << *s.begin()<< endl;
    cout << "Max: " << *s.rbegin()<< endl;
    return 0;
}
  1. 排序:set會自動對其中的元素進行排序。如果需要對一個序列進行排序,可以將其插入到set中,然后再從set中取出元素,這樣就可以得到一個有序的序列。
#include<iostream>
#include<vector>
#include <set>
using namespace std;

int main() {
    vector<int> nums = {7, 3, 1, 6, 4, 2, 5};
    set<int> s(nums.begin(), nums.end());
    for (int num : s) {
        cout<< num << " ";
    }
    return 0;
}

總之,set在算法設計中的應用非常廣泛,可以幫助我們實現去重、查找、區間查詢、最大/最小值查詢和排序等功能。

0
旌德县| 云阳县| 青铜峡市| 新平| 留坝县| 巴东县| 开封市| 新巴尔虎左旗| 长沙市| 庄河市| 北碚区| 建宁县| 景洪市| 邳州市| 鲁山县| 紫金县| 琼海市| 昌吉市| 女性| 乌兰察布市| 汉源县| 清涧县| 芦山县| 神农架林区| 汕头市| 梁山县| 闸北区| 汾阳市| 奎屯市| 枣庄市| 高邑县| 镇巴县| 淮安市| 渭源县| 济南市| 西藏| 金川县| 延寿县| 娄底市| 凤城市| 莱阳市|