2012-03-11 16 views
7

Kendimi sık sık bir çiftler dizisinde arama yapan maksimum değer işlevleri yazarken buluyorum. Grafik gösterilmeden önce verileri normalleştirmek için bu gibi işlevler kullanıyorum.C++, iki katlık bir dizide maksimum değeri bulmak için işlev?

İkili bir dizinin maksimum değerini bulmak için daha iyi bir yol var mı? Bir dizideki maksimum değeri bulmak için standart bir işlev var mı? Bu operasyon için bazı içsel var mı? DSP çiplerinde var olan özel ASM talimatını hatırlıyorum.

cevap

16

Evet!

double arr[LENGTH] = /* ... */ 
double max = *std::max_element(arr, arr + LENGTH); 

Bunu yapmak için #include <algorithm> gerekir: std::max_element adında bir fonksiyon var. Bu başlığın içinde bir sürü güzellik var ve bunlar STL konteynırları ve algoritma kütüphaneleri hakkında daha fazla bilgi edinmek için zaman ayırmaya değer. , çok daha kolay.

Konuyla ilgili olduğumuz sürece, raw C++ dizileri için std::vector veya std::array'a bakmayı düşünün. Daha güvenli ve kullanımı biraz daha kolay.

Bu yardımcı olur umarız!

+0

std :: vectors ile değiştirmek için çok korkuyorum çünkü kodumun otomatik olarak güzelleştirilmesi çok güzel. – Mikhail

+0

@Misha: Korkmayın, sadece deneyin ve performansınızın hala iyi olduğundan emin olmak için birkaç test yapın. Bu hiç mantıksız bir korku değil. Bazı performans kritik kod bölümlerinde (bir çok döngü ve kayan nokta ops) neredeyse% 20'lik bir performans düşüşüne girdik ve VS 6'dan 2005'e geçişi izledik. Yinelemeleri kontrol ettiler ve (iirc) sınırları kontrol ettiler. varsayılan olarak. –