ในบทความนี้ เราจะพูดถึงฟังก์ชัน 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