7
我經常發現自己編寫的最大值函數可以搜索雙精度數組,我使用這些函數在圖形顯示之前對數據進行歸一化。C++函數可以在雙精度數組中找到最大值?
有沒有更好的方法來找到雙數組的最大值?有沒有一個標準函數來查找數組中的最大值?這個操作有沒有內在的東西?我記得DSP芯片中存在專門的ASM指令。
我經常發現自己編寫的最大值函數可以搜索雙精度數組,我使用這些函數在圖形顯示之前對數據進行歸一化。C++函數可以在雙精度數組中找到最大值?
有沒有更好的方法來找到雙數組的最大值?有沒有一個標準函數來查找數組中的最大值?這個操作有沒有內在的東西?我記得DSP芯片中存在專門的ASM指令。
是的!有一個叫std::max_element
功能:
double arr[LENGTH] = /* ... */
double max = *std::max_element(arr, arr + LENGTH);
你需要#include <algorithm>
做到這一點。該頭文件中包含許多好東西,值得花時間瞭解更多關於STL容器和算法庫的內容,因爲它們可以讓您的生活變得更加簡單,如這樣。
只要我們在這個問題上,考慮到std::vector
或std::array
作爲原始C++數組的替代品。它們更安全,更易於使用。
希望這會有所幫助!
我太害怕用std :: vectors替換它們,因爲我的代碼很好地自動向量化。 – Mikhail 2012-03-11 07:26:55
@Misha:不要害怕,只要嘗試一下並運行一些測試,以確保您的表現仍然不錯。這根本不是非理性的恐懼。我們在代碼的一些性能關鍵部分(大量循環和浮點運算)中遇到了近20%的性能下降,並且我們追蹤了它從VS 6到2005的變化。他們檢查了迭代器和(iirc)邊界檢查默認開啓。 – 2012-03-11 08:17:24