Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm set::insert() trong C++ STL


Trong bài viết này, chúng ta sẽ thảo luận về hàm set::insert() trong C++ STL, cú pháp, cách hoạt động và giá trị trả về.

Set trong C++ STL là gì?

Set trong C++ STL là container chứa các phần tử duy nhất theo thứ tự chung. Set bắt buộc các phần tử duy nhất vì giá trị của phần tử xác định bản thân phần tử. Một khi đã thêm giá trị vào set container thì sau đó không thể sửa đổi, tuy nhiên vẫn có thể xóa hoặc thêm giá trị vào set. Set được sử dụng như cây tìm kiếm nhị phân.

set::insert() là gì?

insert() là hàm built-in trong C++ STL, được định nghĩa trong header <set>. Hàm dùng để chèn phần tử vào set container. Khi chèn, kích thước container tăng lên số phần tử chèn. Do set chứa giá trị duy nhất, insert() không chỉ chèn mà còn kiểm tra phần tử cần chèn đã tồn tại chưa. Ngoài ra, set lưu trữ các phần tử theo vị trí đã sắp xếp, nên phần tử chèn sẽ được đặt tại vị trí phù hợp theo thứ tự.

Cú pháp

Set1.insert(const type_t &value); ----(1)
Set1.insert(iterator position, const type_t &value); -----(2)
Set1.insert(iterator position_1, iterator position_2); -----(3)

Tham số

  • value – Giá trị cần chèn vào set container.

  • position – Gợi ý vị trí, hàm sẽ bắt đầu tìm kiếm từ vị trí này và chèn phần tử tại vị trí phù hợp.

  • position_1, position_2 – Hai iterator xác định phạm vi [position_1, position_2) cần chèn vào set.

Giá trị trả về

Hàm trả về kiểu khác nhau tùy theo tham số truyền vào:

  • Chỉ truyền value: trả về iterator trỏ đến phần tử vừa chèn.

  • Truyền position và value: trả về iterator trỏ đến phần tử vừa chèn.

  • Truyền position_1 và position_2: trả về tập hợp các giá trị nằm trong phạm vi từ position_1 đến position_2.

Ví dụ

Input: set<int> myset; myset.insert(10); Output: values in the set = 10
Input: set<int> myset = {11, 12, 13, 14}; myset.insert(myset.begin(), 10); Output: values in the set = 10 11 12 13 14

Ví dụ hoàn chỉnh 1: Chèn lần lượt

#include <bits/stdc++.h>
using namespace std;
int main() {
    set<int> mySet;
    mySet.insert(10);
    mySet.insert(20);
    mySet.insert(30);
    mySet.insert(40);
    mySet.insert(50);
    cout << "Elements are: ";
    for (auto i = mySet.begin(); i != mySet.end(); i++)
        cout << *i << " ";
    return 0;
}

Kết quả

Elements are : 10 20 30 40 50

Ví dụ hoàn chỉnh 2: Chèn dựa trên vị trí gợi ý

#include <bits/stdc++.h>
using namespace std;
int main() {
    set<int> mySet;
    auto i = mySet.insert(mySet.begin(), 10);
    i = mySet.insert(i, 20);
    i = mySet.insert(i, 40);
    i = mySet.insert(i, 30);
    i = mySet.insert(i, 80);
    i = mySet.insert(mySet.end(), 90);
    cout << "Elements are: ";
    for (auto i = mySet.begin(); i != mySet.end(); i++)
        cout << *i << " ";
    return 0;
}

Kết quả

Elements are: 10 20 30 40 80 90