Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membahagikan Senarai dengan Betul kepada Senarai yang Lebih Kecil daripada Saiz Tersuai (cth., 30 atau kurang)?
Pisah senarai kepada senarai saiz tersuai yang lebih kecil
Apabila membahagikan senarai kepada senarai yang lebih kecil dengan saiz tertentu, ia boleh mengecewakan untuk menghadapi pemisahan senarai yang salah. Mari terokai cara mengubah suai fungsi anda splitList
untuk memastikan ia dibahagikan dengan tepat kepada senarai bersaiz 30 atau kurang.
Masalah dengan fungsi asal anda ialah pengiraan gelung: for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--)
. Daripada lelaran daripada bilangan subsenarai yang diingini kepada 0, anda menggelung daripada nilai yang lebih tinggi, mengakibatkan pemisahan yang salah.
Fungsi yang dikemas kini hendaklah:
<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>
Dalam versi yang dikemas kini ini, gelung berulang daripada 0 kepada bilangan subsenarai yang dikehendaki (numLists). Ini memastikan bahawa fungsi mula berpecah di lokasi yang sesuai. Selain itu, kod menggunakan List<float> subLocat = new List<float>(locations);
untuk mencipta salinan locations
, mengelakkan masalah senarai asal diubah suai.
Atas ialah kandungan terperinci Bagaimana untuk Membahagikan Senarai dengan Betul kepada Senarai yang Lebih Kecil daripada Saiz Tersuai (cth., 30 atau kurang)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!