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

テストケースの生成(C ++でのgenerate()およびgenerate_n()


このセクションでは、C++STL関数を使用してテストケースを生成する方法を説明します。配列プログラムのテストケースの生成は、非常に複雑で非効率的なプロセスになる場合があります。 C ++には、テストケースを生成するための2つの方法があります。これらの方法は次のとおりです-

generate()メソッド

C++関数std::alarmithm ::generate()は、genの連続呼び出しによって返される値を、最初から最後までの範囲の要素に割り当てます。最初、最後、およびgenの3つのパラメーターを取ります。これらは、初期位置への順方向イテレーター、最終位置への逆方向イテレーター、および引数なしで呼び出されるジェネレーター関数、および戻り値です。

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
int create_random() {
   return (rand() % 1000);
}
int main () {
   srand(time(NULL));
   vector<int> data(15);
   generate(data.begin(), data.end(), create_random);
   for (int i=0; i<data.size(); i++)
      cout << data[i] << " " ;
}

出力

449 180 785 629 547 912 581 520 534 778 670 302 345 965 107

generate_n()メソッド

C++関数std::alarmithm ::generate_n()は、最初のn個の要素に対してgenへの連続した呼び出しによって返される値を割り当てます。最初にnとgenの3つのパラメーターを取ります。これらは初期位置への順方向イテレーターであり、呼び出しの数と引数なしで呼び出されるジェネレーター関数、および戻り値です。

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
int create_random() {
   return (rand() % 1000);
}
int main () {
   srand(time(NULL));
   vector<int> data(15);
   generate_n(data.begin(), 6, create_random);
   for (int i=0; i<data.size(); i++)
      cout << data[i] << " " ;
}

出力

540 744 814 771 254 913 0 0 0 0 0 0 0 0 0

  1. C++で重複する円と長方形

    (radius、xc、yc)として表される円があると仮定します。ここで、(xc、yc)は円の中心座標です。また、(x1、y1、x2、y2)として表される軸に沿った長方形があります。ここで、(x1、y1)は左下隅の座標であり、(x2、y2)は右上隅の座標です。長方形の角。円と長方形が重なっていないか確認する必要があります。 したがって、入力が次のような場合 そうすれば、出力は真になります。 これを解決するには、次の手順に従います- 関数eval()を定義します。これには、a、b、c、が必要です。 bの最大値とaとcの最小値を返します メインの方法から、次のようにしま

  2. C++でのDominoとTrominoのタイリング

    ドミノとトロミノの2種類の形状があるとします。以下のように回転させることができます- タイリングでは、すべての正方形をタイルで覆う必要があります。ここで、2つのタイルは、ボード上に2つの4方向に隣接するセルがあり、タイルの1つだけが両方の正方形をタイルで占めている場合にのみ異なります。 Nが与えられた場合、2xNボードをタイリングできる方法をいくつ見つける必要がありますか?したがって、入力が3の場合、出力は5になります。したがって、配置は[XYZ XXZ XYYXXYXYY]と[XYZYYZXZZ XYY XXY]になります。ここでは、タイルごとに異なる文字が使用されます。 これを