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

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


ในบทความนี้เราจะอธิบาย set::value_comp() ใน C++ STL รวมถึงไวยากรณ์ การทำงาน และค่าที่ส่งคืน

Set ใน C++ STL คืออะไร?

Set ใน C++ STL เป็นคอนเทนเนอร์ที่เก็บ องค์ประกอบที่ไม่ซ้ำกัน (unique) ในลำดับที่จัดเรียงแล้ว (โดยค่าเริ่มต้นน้อยไปมาก) ค่าขององค์ประกอบระบุตัวตนของมันเอง เมื่อเพิ่มค่าใน set แล้วไม่สามารถแก้ไขได้ แต่ยังสามารถลบหรือเพิ่มค่าใหม่ได้ Set ถูกนำไปใช้งานเป็น binary search tree

set::value_comp() คืออะไร?

value_comp() เป็นฟังก์ชันในตัวของ C++ STL ที่ประกาศใน header file <set> ฟังก์ชันนี้ส่งคืน สำเนาของ comparison object (ออบเจ็กต์เปรียบเทียบ) ที่ set container ใช้สำหรับการเปรียบเทียบ โดยค่าเริ่มต้นคือ object ของ operator น้อยกว่า (less<T>) เป็น function pointer หรือ function object ที่เปรียบเทียบค่าสองค่าประเภทเดียวกันใน set และส่งคืน true หากองค์ประกอบแรกน้อยกว่าองค์ประกอบที่สอง มิฉะนั้นส่งคืน false ใน set ค่าคือ key เอง จึงวางในลำดับที่จัดเรียงแล้ว ทำให้ value_comp() และ key_comp() ทำงานคล้ายกัน

ไวยากรณ์ (Syntax)

comparison_object set_name.value_comp();

พารามิเตอร์ (Parameters)

ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ

ค่าที่ส่งคืน (Return Value)

ส่งคืน comparison object ของ set container ที่เกี่ยวข้อง

ตัวอย่างการใช้งาน

Input: set<int> myset = {9, 8, 7, 6, 5};
set<int>::value_compare cmp = myset.value_comp();
Output: 5 6 7 8 9 (ใช้ cmp เพื่อวนลูป)

ตัวอย่างโค้ดเต็ม

#include <bits/stdc++.h>
using namespace std;

int main() {
    set<int> Set;
    set<int>::value_compare cmp = Set.value_comp();
    
    for (int i = 0; i <= 10; i++)
        Set.insert(i);
    
    cout << "elements in set are: ";
    int front = *Set.rbegin(); // ค่าสุดท้าย (มากที่สุด)
    set<int>::iterator i = Set.begin();
    
    do {
        cout << *i << " ";
    } while (cmp(*(++i), front));
    
    cout << '\n';
    return 0;
}

ผลลัพธ์ (Output)

elements in set are : 0 1 2 3 4 5 6 7 8 9