Maison >développement back-end >C++ >Comment diviser correctement une liste en listes plus petites d'une taille personnalisée (par exemple, 30 ou moins) ?

Comment diviser correctement une liste en listes plus petites d'une taille personnalisée (par exemple, 30 ou moins) ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-18 04:47:12653parcourir

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

Divisez la liste en listes plus petites de taille personnalisée

Lors de la division d'une liste en listes plus petites d'une taille spécifique, il peut être frustrant de rencontrer une division de liste incorrecte. Voyons comment modifier votre fonction splitList pour nous assurer qu'elle est divisée avec précision en listes de taille 30 ou moins.

Le problème avec votre fonction d'origine est le calcul de la boucle : for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--). Au lieu de parcourir le nombre souhaité de sous-listes jusqu'à 0, vous effectuez une boucle à partir d'une valeur plus élevée, ce qui entraîne une division incorrecte.

La fonction mise à jour devrait être :

<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>

Dans cette version mise à jour, la boucle itère de 0 au nombre souhaité de sous-listes (numLists). Cela garantit que la fonction commence à se diviser à l'emplacement approprié. De plus, le code utilise List<float> subLocat = new List<float>(locations); pour créer une copie de locations, évitant ainsi le problème de la modification de la liste originale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn