1,2,3,6,9,5,6,3,25,6,8,7,4 tipinde bir veri seti içeren bir dizi var örneğin 3 değerlerini silmeniz gerekiyor ve çıktıda 3 ve boşluk olmadan aynı diziyi alın. ..
Bir dizi önemsiz değeri temizlemenin en hızlı yolunu arıyorum ...
aklıma bir örnek geliyor
Daha ucuz ve daha hızlı bir yolu var mı?
ArrayResize'ı döngülerden kaldırın ve (her LONG için savaşırsanız, koşulları kontrol edin ve sonunda tek bir Yeniden Boyutlandırma yapın)
ama bu, olduğu gibi, tipiktir - daha sonra toplu olarak yapılabilecek veya hiç yapılmayan her şeyi döngülerden çıkarmak ..
int ArrayDeleteEmpty(const int del, int &one[]) { int i = ArrayBsearch(one, del), y = ArraySize(one)-1; if(one[i] != del) return 0; for(; i<y; i++) one[i] = one[i+1]; ArrayResize(one, y); return y; }
İşte bir seçenek:
template < typename T> int arrayFilter(T &data[], const T value) { int dst = 0 , src = 0 ; for (; src < ArraySize (data); src++) { if (data[src] != value) { if (dst != src) { data[dst] = data[src]; } dst++; } } if (dst < src) { ArrayResize (data, dst); // will only work with dynamic array } return dst; } void OnStart () { long array[] = { 1 , 2 , 3 , 6 , 9 , 5 , 6 , 3 , 25 , 6 , 8 , 7 , 4 }; ArrayPrint (array, 0 , NULL , 0 , arrayFilter< long >(array, 3 )); }
Filtrelenmiş dizideki öğelerin sayısını döndürür. Dinamik ise boyutunu otomatik olarak küçültebilir.
İşte bir seçenek:
Filtrelenmiş dizideki öğelerin sayısını döndürür. Dinamik ise boyutunu otomatik olarak küçültebilir.
biraz daha (birkaç toprak çapı) ve işlevselliğe geleceğiz :-)
hedef ayarla [ filtre $kaynak [ lambda x { ifade $x !=3 } ] ]
bu tcl, lisp'te daha da kısa
En hızlı yol ArrayCopy() ile olur ve kaldırılacak öğeleri hareket ettirmemek için ters sırada döngü yapar.
dizeleri içeren bir dizi yapı olabileceğinden uygun değildir.
Birinde 42 ürün, diğerinde 6, üçüncüde 30 ürün var. Böyle soru ve cevaplarla içinde ne olduğunu hayal etmeye korkuyorum.
Aptalca bir soru, sorulan bir soru değil.
Sorunu çözmek için birkaç seçeneğim var ama daha iyi çözümler aramaya ve başkalarından öğrenmeye devam ediyorum.
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
1,2,3,6,9,5,6,3,25,6,8,7,4 türünde bir veri kümesi içeren bir dizi var, örneğin 3'ün değerleri olmalıdır silindi ve çıktı 3 ve boş boşluklar olmadan aynı dizi olacak. ..
Bir dizi önemsiz değeri temizlemenin en hızlı yolunu arıyorum ...
aklıma bir örnek geliyor
Daha ucuz ve daha hızlı bir yolu var mı?