HOWTO · C++

クラスの C++ ヘルパー関数

このチュートリアルでは、C++ のクラスにヘルパー関数を実装する方法を示します。

このチュートリアルでは、C++ のクラスにヘルパー関数を実装する方法を示します。

クラスの C++ ヘルパー関数

ヘルパー関数は、エンド ユーザーによってインスタンス化されない関数ですが、別のクラス内で内部的に使用される便利な機能を提供します。 関数がクラスのメンバーではなく、他のクラスのメンバーである場合、C++ プログラムはヘルパー関数を作成して、他の目的でデータを出力または使用します。

通常、ヘルパー関数はクラスの作成者によって提供され、クラスの表現に直接アクセスする必要はありません。 ヘルパー関数を実装する C++ の例を試してみましょう。

#include <iostream>
#include <vector>

template <typename Delftstack>
void print(const std::vector<Delftstack>& DemoVec) {
  typename std::vector<Delftstack>::const_iterator x;
  for (x = DemoVec.begin(); x != DemoVec.end(); x++) std::cout << *x << "  ";
  std::cout << std::endl;
}

int main() {
  std::vector<int> vector1, vector2;
  vector1.assign(7, 3);
  vector2.assign(7, 6);

  std::cout << "Vector 1 : ";
  print(vector1);

  std::cout << "Vector 2 : ";
  print(vector2);

  if (vector1 == vector2)
    std::cout << "vector 1 and Vector 2  are lexicographically equal!"
              << std::endl;

  else
    std::cout << "vector 1 and vector 2 are lexicographically not equal!"
              << std::endl;

  if (vector1 > vector2)
    std::cout << "vector 1 is lexicographically greater than vector 2!"
              << std::endl;

  else
    std::cout << "vector 2 is lexicographically greater than vector 1!"
              << std::endl;
}

上記のコードは、クラスでヘルパー関数を使用して 2つのベクトルを比較します。 2つのベクトルが等しくない場合のこのコードの出力は次のとおりです。

Vector 1 : 3  3  3  3  3  3  3
Vector 2 : 6  6  6  6  6  6  6
vector 1 and vector 2 are lexicographically not equal !
vector 2 is lexicographically greater than vector 1 !

ベクトルが等しい場合は、ベクトルの値を次のように変更します。

vector1.assign(7, 3);
vector2.assign(7, 6);

に:

vector1.assign(7, 3);
vector2.assign(7, 3);

この場合、出力は次のようになります。

Vector 1 : 3  3  3  3  3  3  3
Vector 2 : 3  3  3  3  3  3  3
vector 1 and Vector 2  are lexicographically equal!
vector 2 is lexicographically greater than vector 1!

else 条件から来ているので、最後の行は無視できます。 これは、不平等シナリオ用に設定されています。 たとえば、値が次の場合:

vector1.assign(7, 6);
vector2.assign(7, 3);

これらの値の出力は次のようになります。

Vector 1 : 6  6  6  6  6  6  6
Vector 2 : 3  3  3  3  3  3  3
vector 1 and vector 2 are lexicographically not equal!
vector 1 is lexicographically greater than vector 2!