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.

Một số câu hỏi phổ biến về set trong c++

Dưới đây là một số câu hỏi phổ biến về set trong ngôn ngữ lập trình C++:

  1. Set trong C++ là gì?

Set trong C++ là một kiểu dữ liệu dùng để lưu trữ các phần tử không trùng lặp trong một tập hợp. Các phần tử được sắp xếp theo thứ tự tăng dần.

  1. Làm thế nào để tạo một set trong C++?

Để tạo một set trong C++, ta có thể sử dụng cú pháp sau:

#include <set>

std::set<data_type> my_set;

Trong đó, data_type là kiểu dữ liệu của các phần tử trong set và my_set là tên của set.

  1. Làm thế nào để thêm một phần tử vào set trong C++?

Để thêm một phần tử vào set trong C++, ta sử dụng phương thức insert() như sau:

my_set.insert(value);

Trong đó, value là giá trị của phần tử cần thêm vào set.

  1. Làm thế nào để xóa một phần tử khỏi set trong C++?

Để xóa một phần tử khỏi set trong C++, ta sử dụng phương thức erase() như sau:

my_set.erase(value);

Trong đó, value là giá trị của phần tử cần xóa khỏi set.

  1. Làm thế nào để truy cập các phần tử trong set trong C++?

Để truy cập các phần tử trong set trong C++, ta có thể sử dụng vòng lặp for như sau:

for (auto it = my_set.begin(); it != my_set.end(); ++it) {
    // Code xử lý phần tử *it
}

Trong đó, it là một con trỏ đến phần tử trong set, và *it là giá trị của phần tử đó.

  1. Làm thế nào để kiểm tra một phần tử có tồn tại trong set trong C++?

Để kiểm tra một phần tử có tồn tại trong set trong C++, ta sử dụng phương thức count() như sau:

if (my_set.count(value) > 0) {
    // Phần tử value tồn tại trong set
}

Trong đó, value là giá trị của phần tử cần kiểm tra. Phương thức count() sẽ trả về số lần xuất hiện của phần tử đó trong set (tối đa là 1 nếu phần tử là duy nhất).

  1. Làm thế nào để lấy số phần tử trong set trong C++?

Để lấy số phần tử trong set trong C++, ta sử dụng phương thức size() như sau:

int num_elements = my_set.size();

Phương thức size() sẽ trả về số phần tử trong set.

  1. Làm thế nào để lấy phần tử lớn nhất và nhỏ nhất trong set trong C++?

Để lấy phần tử lớn nhất và nhỏ nhất trong set trong C++, ta sử dụng phương thức begin()end() như sau:

// Lấy phần tử nhỏ nhất
auto smallest_element = my_set.begin();

// Lấy phần tử lớn nhất
auto largest_element = std::prev(my_set.end());

Phương thức begin() sẽ trả về con trỏ đến phần tử đầu tiên trong set, trong khi end() sẽ trả về con trỏ đến phần tử sau phần tử cuối cùng trong set. Để lấy phần tử lớn nhất, ta sử dụng hàm std::prev() để lấy con trỏ đến phần tử trước phần tử cuối cùng.

  1. Làm thế nào để tìm phần tử đầu tiên lớn hơn hoặc bằng một giá trị trong set trong C++?

Để tìm phần tử đầu tiên lớn hơn hoặc bằng một giá trị trong set trong C++, ta sử dụng phương thức lower_bound() như sau:

auto it = my_set.lower_bound(value);

Trong đó, value là giá trị cần tìm. Phương thức lower_bound() sẽ trả về con trỏ đến phần tử đầu tiên lớn hơn hoặc bằng value trong set.

  1. Làm thế nào để tìm phần tử đầu tiên nhỏ hơn hoặc bằng một giá trị trong set trong C++?

Để tìm phần tử đầu tiên nhỏ hơn hoặc bằng một giá trị trong set trong C++, ta sử dụng phương thức upper_bound() như sau:

auto it = my_set.upper_bound(value);

Trong đó, value là giá trị cần tìm. Phương thức upper_bound() sẽ trả về con trỏ đến phần tử đầu tiên nhỏ hơn hoặc bằng value trong set.

Xem thêm C++ là gì ? hướng dẫn lập trình c++

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