Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตั้งค่าฟังก์ชัน emplace_hint() ใน C ++ STL


ในบทความนี้ เราจะพูดถึงฟังก์ชัน set::emplace_hint() ใน C++ STL ไวยากรณ์ การทำงาน และค่าที่ส่งคืน

การตั้งค่าใน C++ STL คืออะไร

ชุดใน C++ STL คือคอนเทนเนอร์ที่ต้องมีองค์ประกอบที่ไม่ซ้ำกันในลำดับทั่วไป ชุดต้องมีองค์ประกอบที่ไม่ซ้ำกันเนื่องจากค่าขององค์ประกอบระบุองค์ประกอบ เมื่อเพิ่มค่าในคอนเทนเนอร์ชุดแล้วจะแก้ไขในภายหลังไม่ได้ แม้ว่าเราจะยังสามารถลบหรือเพิ่มค่าลงในชุดได้ ชุดถูกใช้เป็นแผนผังการค้นหาแบบไบนารี

ชุดอะไร::emplace_hint()

ฟังก์ชัน emplace_hint() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว ฟังก์ชันนี้แทรกองค์ประกอบใหม่ในคอนเทนเนอร์ที่ตั้งไว้ด้วยตำแหน่ง ใน emplace_hint() เราส่งองค์ประกอบที่มีตำแหน่ง ตำแหน่งทำหน้าที่เป็นคำใบ้ องค์ประกอบจะถูกแทรกก็ต่อเมื่อไม่มีค่าอื่นเท่ากับค่าที่จะแทรก ฟังก์ชันค้นหาจากตำแหน่งคำใบ้และค้นหาตำแหน่งที่จะวางองค์ประกอบ

ไวยากรณ์

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

พารามิเตอร์

ฟังก์ชันนี้ยอมรับพารามิเตอร์สองตัว ตัวหนึ่งสำหรับตำแหน่งคำใบ้ และตัวที่สองคือองค์ประกอบที่จะติดตั้ง

ตำแหน่ง − นี่คือตำแหน่งคำใบ้ จากตำแหน่งที่การค้นหาเริ่มค้นหาตำแหน่งของค่าที่จะวาง ตำแหน่งนี้เกิดขึ้นเพื่อให้การทำงานของฟังก์ชันเร็วขึ้น ฟังก์ชันนี้ไม่ได้ระบุตำแหน่งที่แน่นอนขององค์ประกอบที่จะฝัง

ความคุ้มค่า − มูลค่าที่แท้จริงที่เราต้องวางเอาไว้

คืนค่า

ฟังก์ชันนี้จะส่งคืนตัววนซ้ำไปยังองค์ประกอบที่แทรกใหม่ หากองค์ประกอบนั้นถูกแทรกสำเร็จ

ตัวอย่าง

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

ตัวอย่าง

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

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Elements are : 0 1 2

ตัวอย่าง

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

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

String is : best is the point tutorials