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