2012-09-28 91 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!复制并粘贴错误...修复。 –