2014-11-04 130 views
0

我有一個矢量,我想用標量值乘以它的每個元素。我寫了下面的代碼,這使用STL算法的矢量操作

int func(const int x) 
{ 
    return 10 * x; // say the scalar value is 10 
} 
void foo() 
{ 
    // .. compute vector vert 
    std::transform(vert.begin(), vert.end(), vert.begin(), ::func); 
}  

的代碼做這項工作,但我想知道如果有一個更簡潔的方式可能對於這一點,一個不需要我來定義FUNC功能seperately

+1

[Lambda是你的朋友。](http://coliru.stacked-crooked.com/a/8b2b8cb813ce2114) – 0x499602D2 2014-11-04 23:38:42

+3

它是否必須使用算法? 'for(int&x:vert)x * = 10;' – 2014-11-04 23:41:48

+0

@MikeSeymour:或甚至用C++ 1z:'for(x:vert)x * = 10;' – Deduplicator 2014-11-04 23:42:49

回答

3

我仍然還沒有看到的情況下transform()實際上看起來像一個很好的答案...我會強烈建議:

for (int& x : vert) { 
    x *= 10; // or x = func(x) 
} 

更清晰,更簡潔。