Set ใน C++ เป็นคอนเทนเนอร์แบบ associative ที่มีสมาชิกที่ไม่ซ้ำกัน ทุกสมาชิกที่เพิ่มเข้าไปใน set ไม่สามารถแก้ไขได้โดยตรง สามารถลบและเพิ่มสมาชิกเท่านั้นเพื่อเปลี่ยนแปลงข้อมูล
Pair ถูกกำหนดใน header <utility> และใช้สำหรับจับคู่ค่าสองค่าเข้าด้วยกัน Pair สามารถมีค่าที่เป็นชนิดข้อมูลเดียวกันหรือต่างกันได้ คลาสนี้มีฟังก์ชันสมาชิก first() และ second() สำหรับเข้าถึงค่าในคู่แต่ละค่า
ลำดับของสมาชิกใน pair ถูกกำหนดไว้ (first, second) เราสามารถใช้ pair เพื่อรวมค่าสองค่าที่เป็นชนิดข้อมูลต่างกัน (heterogeneous) ได้
เพื่อเข้าถึงสมาชิกใดสมาชิกหนึ่ง ใช้ variable_name.first สำหรับสมาชิกแรก และ variable_name.second สำหรับสมาชิกที่สองของ pair
Set of Pairs ใน C++
- ไม่สามารถมีคู่ซ้ำกันใน set of pairs ได้
- สมาชิกของ set นี้ (คือ pairs) จะถูกเรียงลำดับตาม key ซึ่งคือสมาชิกแรก (first) ของแต่ละ pair ใน set
- เราสามารถค้นหา pair เพิ่ม pair ลบ pair และนับจำนวน pair ได้
- Syntax คือ:
set< pair<datatype1, datatype2> > set_name;
set < pair <int, int> > set1;
ที่นี่ set1 เป็นอ็อบเจกต์ประเภท set ที่ประกอบด้วย pair ของจำนวนเต็มสองค่า
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
int main() {
// pair<int, int> pairs;
int arr[] = { 2, 3, 1, 6, 9, 7, 10, 2 };
int n = 8;
set<pair <int,int> > set1;
for (int i = 0; i < n-1; i++) {
for (int j = i + 1; j < n; j++) {
if (arr[i] % 2 == 1 && arr[j] % 2 == 1) {
// คู่ของจำนวนคี่
pair<int, int> p1 = make_pair(arr[i], arr[j]);
// ใส่เข้า set
set1.insert(p1);
}
}
}
// แสดงคู่ต่างๆ
for (auto const &var : set1) {
cout << "(" << var.first << ", " << var.second << ") ";
}
// ล้าง set
set1.clear();
}
ผลลัพธ์
(1, 7) (1, 9) (3, 1) (3, 7) (3, 9) (9, 7)