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!