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

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


Trong bài viết này, chúng ta sẽ thảo luận về hàm set::emplace_hint() 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::emplace_hint() là gì?

emplace_hint() là hàm built-in trong C++ STL, được định nghĩa trong header <set>. Hàm chèn phần tử mới vào set container với một vị trí gợi ý (hint). Trong emplace_hint() ta truyền phần tử kèm vị trí, vị trí đóng vai trò hint. Phần tử được chèn nếu và chỉ nếu không có giá trị nào bằng giá trị cần chèn. Hàm tìm kiếm từ vị trí hint và tìm vị trí phù hợp để emplace phần tử.

Cú pháp

Set1.emplace_hint(iterator position, const type_t& value);

Tham số

Hàm nhận hai tham số: một cho vị trí hint, hai cho phần tử cần emplace.

Position – Vị trí hint, từ đó bắt đầu tìm kiếm vị trí chèn. Vị trí này chỉ giúp hàm chạy nhanh hơn, không chỉ định vị trí chính xác của phần tử chèn.

Value – Giá trị thực cần emplace.

Giá trị trả về

Trả về iterator đến phần tử mới chèn nếu chèn thành công.

Ví dụ

Input: set mySet; mySet.emplace_hint(mySet.begin(), 0); mySet.emplace_hint(i, 1); mySet.emplace_hint(i, 2); mySet.emplace_hint(i, 1); Output: Elements are : 0 1 2

Ví dụ hoàn chỉnh 1

#include <bits/stdc++.h>
using namespace std;
int main() {
    set<int> mySet;
    auto i = mySet.emplace_hint(mySet.begin(), 0);
    i = mySet.emplace_hint(i, 1);
    mySet.emplace_hint(i, 2);
    mySet.emplace_hint(i, 1);
    cout << "elements are : ";
    for (auto i = mySet.begin(); i != mySet.end(); i++)
        cout << *i << " ";
    return 0;
}

Kết quả

Elements are : 0 1 2

Ví dụ hoàn chỉnh 2 (với string)

#include <iostream>
#include <set>
#include <string>
int main() {
    std::set<std::string> mySet;
    auto i = mySet.cbegin();
    mySet.emplace_hint(i, "best");
    i = mySet.emplace_hint(mySet.cend(), "point");
    i = mySet.emplace_hint(i, "is the");
    i = mySet.emplace_hint(i, "tutorials");
    std::cout << "string is : ";
    for (const std::string& str : mySet)
        std::cout << ' ' << str;
    std::cout << '\n';
    return 0;
}

Kết quả

String is : best is the point tutorials