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

ชุดของคู่ (Set of Pairs) ใน C++

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)