ホームページ > バックエンド開発 > C++ > リストを特定のサイズの小さなサブリストに効率的に分割するにはどうすればよいですか?

リストを特定のサイズの小さなサブリストに効率的に分割するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-18 04:36:10
オリジナル
518 人が閲覧しました

How Can I Efficiently Split a List into Smaller Sublists of a Specific Size?

リストを指定されたサイズのサブユニットに分割します

この記事では、指定されたリストを、それぞれに事前定義された数の要素が含まれる複数の小さなサブリストに分割する方法という一般的な問題を解決します。既存のメソッドでは、サブリストのサイズが予想よりも大きくなることがよくあります。

この問題を解決するには、ソース リストを指定したサイズのサブリストに分割できる拡張メソッドを使用することをお勧めします。このメソッドは ChunkBy という名前で、LINQ の集計機能と射影機能を活用して、目的の結果を実現します。

次のコード スニペットをご覧ください:

<code class="language-csharp">/// <summary>
/// 列表辅助方法。
/// </summary>
public static class ListExtensions
{
    public static List<List<T>> ChunkBy<T>(this List<T> source, int chunkSize) 
    {
        return source
            .Select((x, i) => new { Index = i, Value = x })
            .GroupBy(x => x.Index / chunkSize)
            .Select(x => x.Select(v => v.Value).ToList())
            .ToList();
    }
}</code>
ログイン後にコピー

このメソッドはソース リストの要素を反復処理し、各要素をそのインデックスに関連付けます。次に、要素インデックスをブロック サイズで割った値に基づいて要素をグループ化します。最後に、要素の値を含むサブリストにグループを投影します。

たとえば、18 項目のリストがそれぞれ 5 要素のサブリストに分割された場合、結果は次のように分散された 4 つのサブリストのリストになります: 5-5-5-3。

注: .NET 6 では、次の例に示すように、LINQ の改善により分割が容易になります。

以上がリストを特定のサイズの小さなサブリストに効率的に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート