ในบทความนี้เราจะอธิบายฟังก์ชัน set::insert() ใน C++ STL รวมถึงไวยากรณ์ การทำงาน และค่าที่ส่งคืน
Set ใน C++ STL คืออะไร?
Set ใน C++ STL เป็นคอนเทนเนอร์ที่เก็บ องค์ประกอบที่ไม่ซ้ำกัน (unique) ในลำดับที่จัดเรียงแล้ว ค่าขององค์ประกอบระบุตัวตนของมันเอง เมื่อเพิ่มค่าใน set แล้วไม่สามารถแก้ไขได้ แต่ยังสามารถลบหรือเพิ่มค่าใหม่ได้ Set ถูกนำไปใช้งานเป็น binary search tree
set::insert() คืออะไร?
insert() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศใน header file <set> ฟังก์ชันนี้ใช้สำหรับ แทรกองค์ประกอบใน set container เมื่อแทรกข้อมูล ขนาดของ container จะเพิ่มขึ้นตามจำนวนองค์ประกอบที่แทรก เนื่องจาก set เก็บค่าที่ไม่ซ้ำกัน insert() จะตรวจสอบก่อนว่าค่าที่จะแทรกมีอยู่แล้วหรือไม่ นอกจากนี้ set จัดเก็บข้อมูลเรียงลำดับแล้ว องค์ประกอบที่แทรกจะถูกวางตามตำแหน่งที่จัดเรียงแล้ว
ไวยากรณ์ (Syntax)
// 1. แทรกค่าเดียว Set1.insert(const type_t &value); // 2. แทรกค่าเดียวพร้อม hint position Set1.insert(iterator position, const type_t &value); // 3. แทรกช่วงของค่าจาก iterator position_1 ถึง position_2 Set1.insert(iterator position_1, iterator position_2);
พารามิเตอร์ (Parameters)
- value – ค่าที่ต้องการแทรกใน set container
- position – hint position เริ่มค้นหาตำแหน่งที่เหมาะสมจากที่นี่ (ไม่บังคับตำแหน่งแน่นอน)
- position_1, position_2 – iterator ที่ระบุช่วง [position_1, position_2) ที่ต้องการแทรกใน set
ค่าที่ส่งคืน (Return Value)
ฟังก์ชันส่งคืนค่าต่างกันตามอาร์กิวเมนต์:
- ส่งค่า value อย่างเดียว: ส่งคืน iterator ชี้ไปยังองค์ประกอบที่แทรก
- ส่งค่า position และ value: ส่งคืน iterator ชี้ไปยังองค์ประกอบที่แทรก
- ส่งค่า position_1 และ position_2: ส่งคืน void (ไม่มีค่าส่งคืน)
ตัวอย่างการใช้งาน
Input: set<int> myset;
myset.insert(10);
Output: values in the set = 10
Input: set<int> myset = {11, 12, 13, 14};
myset.insert(myset.begin(), 10);
Output: values in the set = 10 11 12 13 14
ตัวอย่างโค้ดเต็ม 1: แทรกทีละค่า
#include <bits/stdc++.h>
using namespace std;
int main() {
set<int> mySet;
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
mySet.insert(40);
mySet.insert(50);
cout << "Elements are: ";
for (auto i = mySet.begin(); i != mySet.end(); i++)
cout << *i << " ";
return 0;
}
ผลลัพธ์ (Output)
Elements are : 10 20 30 40 50
ตัวอย่างโค้ดเต็ม 2: แทรกพร้อม hint position
#include <bits/stdc++.h>
using namespace std;
int main() {
set<int> mySet;
auto i = mySet.insert(mySet.begin(), 10);
i = mySet.insert(i, 20);
i = mySet.insert(i, 40);
i = mySet.insert(i, 30);
i = mySet.insert(i, 80);
i = mySet.insert(mySet.end(), 90);
cout << "Elements are: ";
for (auto i = mySet.begin(); i != mySet.end(); i++)
cout << *i << " ";
return 0;
}
ผลลัพธ์ (Output)
Elements are: 10 20 30 40 80 90