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

C ++でユーザー定義のクラスまたは構造体のunordered_setを作成するにはどうすればよいですか?


このチュートリアルでは、C++で順序付けられていないユーザー定義のクラスまたは構造体のセットを作成する方法を理解するためのプログラムについて説明します。

このために、構造タイプを作成してから、2つの構造タイプをユーザーが定義した関数と比較してハッシュ関数を格納します。

#include <bits/stdc++.h>
using namespace std;
//defined structure
struct Test {
   int id;
   bool operator==(const Test& t) const{
      return (this->id == t.id);
   }
};
//defined class for hash function
class MyHashFunction {
   public:
      size_t operator()(const Test& t) const{
         return t.id;
   }
};
int main(){
   Test t1 = { 110 }, t2 = { 102 }, t3 = { 101 }, t4 = { 115 };
   //defining unordered set
   unordered_set<Test, MyHashFunction> us;
   us.insert(t1);
   us.insert(t2);
   us.insert(t3);
   us.insert(t4);
   for (auto e : us) {
      cout << e.id << " ";
   }
   return 0;
}

出力

115 101 110 102

  1. C /C++構造体とクラス

    C ++では、構造とクラスは基本的に同じです。しかし、いくつかの小さな違いがあります。これらの違いは以下のようなものです。 クラスメンバーはデフォルトでプライベートですが、構造体のメンバーはパブリックです。違いを確認するために、これら2つのコードを見てみましょう。 例 #include <iostream> using namespace std; class my_class {    int x = 10; }; int main() {    my_class my_ob;    cout <<

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

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