2012-03-11 40 views
7

我經常發現自己編寫的最大值函數可以搜索雙精度數組,我使用這些函數在圖形顯示之前對數據進行歸一化。C++函數可以在雙精度數組中找到最大值?

有沒有更好的方法來找到雙數組的最大值?有沒有一個標準函數來查找數組中的最大值?這個操作有沒有內在的東西?我記得DSP芯片中存在專門的ASM指令。

回答

16

是的!有一個叫std::max_element功能:

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

你需要#include <algorithm>做到這一點。該頭文件中包含許多好東西,值得花時間瞭解更多關於STL容器和算法庫的內容,因爲它們可以讓您的生活變得更加簡單,如這樣

只要我們在這個問題上,考慮到std::vectorstd::array作爲原始C++數組的替代品。它們更安全,更易於使用。

希望這會有所幫助!

+0

我太害怕用std :: vectors替換它們,因爲我的代碼很好地自動向量化。 – Mikhail 2012-03-11 07:26:55

+0

@Misha:不要害怕,只要嘗試一下並運行一些測試,以確保您的表現仍然不錯。這根本不是非理性的恐懼。我們在代碼的一些性能關鍵部分(大量循環和浮點運算)中遇到了近20%的性能下降,並且我們追蹤了它從VS 6到2005的變化。他們檢查了迭代器和(iirc)邊界檢查默認開啓。 – 2012-03-11 08:17:24

相關問題