在昨天寫完 set,今天更深入一點,來認識 pari
pair 數對是將2個數據組合成一個數據,當需要這樣的需求時就可以使用pair,如stl中的map就是將key和value放在一起來保存。
第一個元素稱為“第一個”,第二個元素稱為“第二個”,順序是固定的(第一個,第二個)。
Pair 可以分配,複製和比較對。
其中所有“first”元素都是與其“second”值對象關聯的唯一鍵。
Pairs 有助於處理:
需要一對資料,但不允許重複。
刪除一對資料。
計算資料共有幾對。
檢查一組資料中是否存在數對。
例題:Making pairs of all even numbers present in an array.
Input: 2 3 1 6 5 8 10 9
Output: (2, 6) (2, 8) (2, 10) (6, 8) (6, 10) (8, 10)
Input: 4 4 6 4
Output: (4, 4) (4, 6)
Input: 24 24 24 24
Output: (24, 24)
Input: 7, 100, 53, 81
Output: No valid pair
// C++ program to create Set of Pairs
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pairs;
// Constant reference
// reference for speed const to avoid changing values
void display(const set<pairs>& s)
{
bool found = false;
// range-based for loop
for (auto const &x : s) {
found = true;
cout << "(" << x.first << ", "
<< x.second << ")"
<< " ";
}
if (not found) {
cout << "No valid pair\n";
}
}
int main()
{
vector<int> v{ 2, 3, 1, 6, 5, 8, 10, 9 };
set<pairs> s;
sort(v.begin(), v.end());
for (int i = 0; i < v.size() - 1; i++) {
for (int j = i + 1; j < v.size(); j++) {
// check for even number
if (v[i] % 2 == 0 && v[j] % 2 == 0) {
// makes pairs of even numbers
pairs x = make_pair(v[i], v[j]);
// inserts into the set
s.insert(x);
}
}
}
// to display the pairs
display(s);
// to clear the set
s.clear();
}
來源:https://www.geeksforgeeks.org/sets-of-pairs-in-c/