iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 6
1
自我挑戰組

資料結構大便當系列 第 6

[Day 6] pair 數對

  • 分享至 

  • xImage
  •  

在昨天寫完 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/


上一篇
[Day 5] Sets 集合
下一篇
[Day 7] Stack,初入 Stack
系列文
資料結構大便當30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言