我在java中有一个函数
static int a2(int[] a)
{
int sumEven = 0;
int sumOdd = 0;
for (int i=0; i<a.length; i++)
{
if (a[i]%2 == 0)
sumEven += a[i];
else
sumOdd += a[i];
}
return sumOdd - sumEven;
}
Run Code Online (Sandbox Code Playgroud)
我在java中用main调用它
public static void main()
{
a2(new int[] {1});
a2(new int[] {1, 2});
a2(new int[] {1, 2, 3});
a2(new int[] {1, 2, 3, 4});
a2(new int[] {3, 3, 4, 4});
a2(new int[] {3, 2, 3, 4});
a2(new int[] {4, 1, 2, 3});
a2(new int[] {1, 1});
a2(new int[] {});
}
Run Code Online (Sandbox Code Playgroud)
其中a2是函数,参数是数组.我想用c ++实现同样的东西,但是我无法将数组传递给函数,就像我传入java一样.以临时数组的地址给出错误[错误].
在c ++中,我就是这样做的
f((int[4]) {1,2,3,4});
Run Code Online (Sandbox Code Playgroud)
给出错误=> [错误]获取临时数组的地址.
怎么做到这一点?
使用std::vector而不是处理低级数组:
int a2( const std::vector<int> &v )
{
return std::accumulate( v.begin(), v.end(), 0, []( int a, int b ) {
return a + ( b % 2 ? b : -b );
} );
}
int main()
{
a2( { 1, 2, 3 } );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
727 次 |
| 最近记录: |