2012-09-28 93 views
-8

我必須對範圍[-1; 1]中的值列表進行標準化。 我已經在c#中找到了這段代碼,但我不知道這種語言。有人可以幫助我在C++中翻譯這個嗎?在C++中翻譯lambda表達式c#

List<int> list = new List<int>{-5,-4,-3,-2,-1,0,1,2,3,4,5}; 
double scaleMin = -1; //the normalized minimum desired 
double scaleMax = 1; //the normalized maximum desired 

double valueMax = list.Max(); 
double valueMin = list.Min(); 
double valueRange = valueMax - valueMin; 
double scaleRange = scaleMax - scaleMin; 

IEnumerable<double> normalized = 
list.Select (i => 
    ((scaleRange * (i - valueMin)) 
     /valueRange) 
    + scaleMin); 

回答

4

代碼...

IEnumerable<double> normalized = list.Select (i => ((scaleRange * (i - valueMin))/valueRange) + scaleMin); 

...可重寫(在C#),而lambda表達式是這樣的...

IEnumerable<double> normalized = new List<double>(); 
for (var elem in list) 
{ 
    normalized.Add(((scaleRange * (elem - valueMin))/valueRange) + scaleMin); 
} 

你應該能夠將該算法轉換爲您需要的任何語言。

+0

subs/var elem/var i/ – 2012-09-28 16:36:14

+0

@ebyrob - Thx!複製並粘貼錯誤...修復。 –