Computer >> Máy Tính >  >> Lập trình >> C ++

Đặt hàm 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 làm việc và giá trị trả về của chúng.

Đặt trong C ++ STL là gì?

Các bộ trong C ++ STL là các bộ chứa phải có các phần tử duy nhất theo thứ tự chung. Tập hợp phải có các phần tử duy nhất vì giá trị của phần tử xác định phần tử. Sau khi đã thêm một giá trị trong vùng chứa đã đặt thì không thể sửa đổi được, mặc dù chúng tôi vẫn có thể xóa hoặc thêm các giá trị vào tập hợp. Các tập hợp được sử dụng làm cây tìm kiếm nhị phân.

Set ::emplace_hint ()

là gì

Hàm emplace_hint () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề. Hàm này sẽ chèn một phần tử mới vào vùng chứa đã đặt với một vị trí. Trong emplace_hint () chúng ta truyền phần tử với một vị trí, vị trí đóng vai trò như một gợi ý. Phần tử được chèn khi và chỉ khi không có giá trị nào khác bằng giá trị sẽ được chèn. Hàm tìm kiếm từ vị trí gợi ý và tìm vị trí mà phần tử sẽ được thay thế.

Cú pháp

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

Tham số

Hàm này chấp nhận hai tham số, một cho vị trí gợi ý và thứ hai là phần tử sẽ được thay thế.

Vị trí - Đây là vị trí gợi ý, từ nơi bắt đầu tìm kiếm để tìm vị trí của giá trị được thay thế. Vị trí này chỉ xảy ra để làm cho hoạt động của hàm nhanh hơn, hàm này không chỉ định vị trí chính xác của phần tử sẽ được thay thế.

Giá trị - Giá trị thực mà chúng ta phải thay thế.

Giá trị trả về

Hàm này trả về trình vòng lặp cho phần tử mới được chèn nếu phần tử được 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ụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên thì nó sẽ tạo ra kết quả sau -

Elements are : 0 1 2

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên thì nó sẽ tạo ra kết quả sau -

String is : best is the point tutorials