Set trong C++ là container liên kết chứa các phần tử duy nhất. Tất cả phần tử sau khi thêm vào set không thể sửa đổi, chỉ có thể xóa và thêm mới.
Pair được định nghĩa dưới header <utility> và dùng để gộp hai giá trị. Pair có thể chứa giá trị khác kiểu hoặc cùng kiểu. Lớp có hàm thành viên first() và second() để truy cập riêng từng giá trị.
Thứ tự phần tử trong pair cố định (first, second). Ta dùng pair để kết hợp hai giá trị dị chất khác kiểu.
Để truy cập: ten_bien.first cho phần tử đầu, ten_bien.second cho phần tử thứ hai.
Set của các cặp trong C++
- Không cho phép cặp trùng lặp trong set của cặp.
- Các phần tử (cặp) được sắp xếp theo khóa là phần tử đầu của mỗi cặp.
- Có thể tìm kiếm, thêm, xóa cặp và đếm số cặp.
- Cú pháp:
set< pair<datatype1, datatype2> > ten_set;
set < pair <int, int> > set1;
Ở đây, set1 là đối tượng kiểu set chứa các cặp hai số nguyên.
Ví dụ
#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) {
// cặp các số lẻ
pair<int,int> p1 = make_pair(arr[i], arr[j]);
// đưa vào set
set1.insert(p1);
}
}
}
// hiển thị các cặp
for (auto const &var : set1) {
cout << "(" << var.first << ", " << var.second << ") " << " ";
}
// xóa set
set1.clear();
}
Đầu ra
(1, 7) (1, 9) (3, 1) (3, 7) (3, 9) (9, 7)