ホームページ > バックエンド開発 > C++ > リストをカスタム サイズ (例: 30 以下) の小さなリストに正しく分割するにはどうすればよいですか?

リストをカスタム サイズ (例: 30 以下) の小さなリストに正しく分割するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-18 04:47:12
オリジナル
652 人が閲覧しました

How to Correctly Split a List into Smaller Lists of a Custom Size (e.g., 30 or less)?

リストをカスタム サイズの小さなリストに分割します

リストを特定のサイズの小さなリストに分割する場合、リストの分割が正しく行われないとイライラすることがあります。関数 splitList を変更して、サイズ 30 以下のリストに正確に分割できるようにする方法を見てみましょう。

元の関数の問題はループ計算です: for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--)。必要な数のサブリストから 0 まで反復するのではなく、より高い値からループすることになり、結果として不正確な分割が発生します。

更新された関数は次のようになります:

<code class="language-c#">public static List<List<float>> splitList(List<float> locations, int nSize = 30)
{
    List<List<float>> list = new List<List<float>>();

    int numLists = (int)(Math.Ceiling((decimal)(locations.Count / nSize)));

    for (int i = 0; i < numLists; i++)
    {
        List<float> subLocat = new List<float>(locations); // 创建locations的副本

        if (subLocat.Count >= ((i * nSize) + nSize))
            subLocat.RemoveRange(i * nSize, nSize);
        else
            subLocat.RemoveRange(i * nSize, subLocat.Count - (i * nSize));

        Debug.Log("Index: " + i.ToString() + ", Size: " + subLocat.Count.ToString());
        list.Add(subLocat);
    }

    return list;
}</code>
ログイン後にコピー

この更新されたバージョンでは、ループは 0 から必要な数のサブリスト (numLists) まで反復されます。これにより、関数が適切な位置で分割を開始することが保証されます。 さらに、このコードは List<float> subLocat = new List<float>(locations); を使用して locations のコピーを作成し、元のリストが変更される問題を回避します。

以上がリストをカスタム サイズ (例: 30 以下) の小さなリストに正しく分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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