ベクトルのシャッフルは、さまざまなプログラミング タスクで一般的な操作です。これを実現するにはいくつかの方法がありますが、さまざまなシナリオで再利用できる汎用的で効率的なアプローチを選択することが重要です。
提供されたコード スニペットでは、現在のアプローチでは中間配列を作成し、項目タイプが異なるため、非効率につながる可能性があります。 C 11 以降のバージョンを使用すると、より効率的で再利用可能なソリューションが提供されます。
C 11 以降の使用
このコードは std::shuffle 関数を使用します。 、これには 3 番目の引数としてランダム エンジンが必要です。 std::default_random_engine は乱数の生成に使用されます。この関数を使用すると、中間配列を作成したり項目の型を知らなくても、要素をその場でシャッフルできます。
C 98 の使用
C 98 の場合、 std::random_shuffle 関数:
ランダムのシードEngine
毎回異なる順列を生成するには、std::random_device:
を使用してランダム エンジンをシードできます。このアプローチにより、シャッフルの異なるシーケンスが毎回生成されるようになります。プログラムが実行される時間。
以上がC でベクトルを効率的かつ再利用可能にシャッフルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。