C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++でペアのunordered_mapを作成するにはどうすればよいですか?


このチュートリアルでは、C++で順序付けされていないペアのマップを作成する方法を理解するためのプログラムについて説明します。

順序付けされていないマップは、デフォルトでペアのハッシュ関数を含まないマップです。特定のペアのハッシュ値が必要な場合は、明示的に渡す必要があります。

#include <bits/stdc++.h>
using namespace std;
//to hash any given pair
struct hash_pair {
   template <class T1, class T2>
   size_t operator()(const pair<T1, T2>& p) const{
      auto hash1 = hash<T1>{}(p.first);
      auto hash2 = hash<T2>{}(p.second);
      return hash1 ^ hash2;
   }
};
int main(){
   //explicitly sending hash function
   unordered_map<pair<int, int>, bool, hash_pair> um;
   //creating some pairs to be used as keys
   pair<int, int> p1(1000, 2000);
   pair<int, int> p2(2000, 3000);
   pair<int, int> p3(2005, 3005);
   um[p1] = true;
   um[p2] = false;
   um[p3] = true;
   cout << "Contents of the unordered_map : \n";
   for (auto p : um)
      cout << "[" << (p.first).first << ", "<< (p.first).second << "] ==> " << p.second << "\n";
   return 0;
}

出力

Contents of the unordered_map :
[1000, 2000] ==> 1
[2005, 3005] ==> 1
[2000, 3000] ==> 0

  1. C++で合計が2の累乗であるペアの数

    配列が与えられた場合、合計が2の累乗であるペアの数を見つける必要があります。例を見てみましょう。 入力 arr = [1, 2, 3] 出力 1 合計が2の累乗であるペアは1つだけで、ペアは(1、3)です。 アルゴリズム 乱数を使用して配列を初期化します。 カウントを0に初期化します。 2つのループを記述して、配列のすべてのペアを取得します。 すべてのペアの合計を計算します。 ビット単位のANDを使用して、合計が2の累乗であるかどうかを確認します。 カウントが2の累乗の場合は、カウントを増やします。 カウントを返します。 実装 以下は、C++での上記のアルゴリズムの実装

  2. C ++を使用してOpenCVでバイナリイメージを作成するにはどうすればよいですか?

    バイナリイメージは、白黒の2色を表す単なるデジタルイメージです。画像処理の観点から、バイナリ画像には、0と1の2つの可能な値を持つピクセルが含まれています。ピクセルの値が0の場合、それは純粋な黒色を表します。ピクセルの値が1の場合、それは純粋な白色を意味します。 グレースケール画像では、それぞれに256の異なる可能な値があります。しかし、バイナリイメージでは、可能な値は2つだけです。バイナリイメージには、さまざまなタイプのアプリケーションがあります。たとえば、形態学的変換には2値画像が必要であり、背景からのオブジェクト形状の抽出には2値画像が必要です。OpenCVを使用すると、画像を2値画像