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

set::insert() ใน C++ STL


ในบทความนี้เราจะอธิบายฟังก์ชัน 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