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