Rate this post

set trong C++ là một lớp trong thư viện <set> cung cấp một cấu trúc dữ liệu để lưu trữ một tập hợp các phần tử không trùng lặp. Các phần tử trong một set được sắp xếp theo thứ tự tự nhiên và không cho phép có các phần tử trùng lặp.

bài viết liên quan

set sử dụng cây nhị phân tìm kiếm (BST) để lưu trữ và quản lý các phần tử, nên các phần tử trong một set được sắp xếp theo thứ tự tự nhiên.

set cung cấp các hàm hỗ trợ như insert(), erase(), find(), size(), empty() để thêm, xóa, tìm kiếm, lấy kích thước và kiểm tra rỗng của tập hợp.

Ví dụ về sử dụng set:

#include <iostream>
#include <set>
using namespace std;

int main() {
    set<int> s;
    s.insert(5);
    s.insert(3);
    s.insert(7);
    s.insert(5);  // không thêm vì 5 đã có trong set
    for (auto x : s) {
        cout << x << " ";
    }
    cout << endl;
    return 0;
}

Kết quả: 3 5 7

Trong ví dụ trên, chúng ta tạo một đối tượng set với kiểu dữ liệu int, sau đó thêm các phần tử 5, 3, 7 vào set, vì set không cho phép trùng lặp nên phần tử 5 đã được thêm vào sẽ không được thêm vào. Cuối cùng, chúng ta dùng vòng lặp for-each để in ra tất cả các phần tử trong set.

set cung cấp nhiều tính năng hữu ích khác nhau, chẳng hạn như:

  • Tìm kiếm phần tử trong set sử dụng hàm find()
  • Xóa phần tử trong set sử dụng hàm erase()
  • Lấy kích thước của set sử dụng hàm size()
  • Kiểm tra xem set có rỗng hay không sử dụng hàm empty()

set là một cấu trúc dữ liệu rất hữu ích khi bạn cần quản lý một tập hợp các phần tử không trùng lặp và cần sắp xếp theo thứ tự tự nhiên.

Một số ví dụ set trong c++

Dưới đây là một số ví dụ về sử dụng set trong C++:

  1. Tạo một set với kiểu dữ liệu int và thêm các phần tử vào set:
set<int> s;
s.insert(5);
s.insert(3);
s.insert(7);
s.insert(2);
  1. Tìm kiếm phần tử trong set:
set<int>::iterator it = s.find(3);
if (it != s.end()) {
    cout << "Phan tu 3 ton tai trong set" << endl;
} else {
    cout << "Phan tu 3 khong ton tai trong set" << endl;
}
  1. Xóa phần tử trong set:
s.erase(3);
  1. Lấy kích thước của set:
cout << "Kich thuoc cua set la: " << s.size() << endl;
  1. Kiểm tra xem set có rỗng hay không:
if (s.empty()) {
    cout << "Set rong" << endl;
} else {
    cout << "Set khong rong" << endl;
}
  1. Tạo một set với kiểu dữ liệu string và thêm các phần tử vào set:
set<string> myset;
myset.insert("apple");
myset.insert("banana");
myset.insert("orange");
myset.insert("mango");
  1. Tìm kiếm phần tử trong set:
set<string>::iterator it = myset.find("banana");
if (it != myset.end()) {
    cout << "Phan tu banana ton tai trong set" << endl;
} else {
    cout << "Phan tu banana khong ton tai trong set" << endl;
}
    
    
    1. Tạo một set với kiểu dữ liệu custom class:
    class Person {
    public:
        string name;
        int age;
        Person(string n, int a) : name(n), age(a) {}
        bool operator<(const Person& p) const {
            return name < p.name;
        }
    };
    
    set<Person> people;
    people.insert(Person("John", 30));
    people.insert(Person("Mike", 25));
    people.insert(Person("Sara", 35));

    Trong các ví dụ trên, chúng ta có thể thấy rằng set là một cấu trúc dữ liệu rất hữu ích để quản lý tập hợp các phần tử không trùng lặp và có thể sử dụng với nhiều kiểu dữ liệu khác nhau.

    Trả lời

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    Contact Me on Zalo
    Call now