C++ 元素乘法-每三个元素

C++ 元素乘法-每三个元素,c++,arrays,complex-numbers,C++,Arrays,Complex Numbers,我有一个由数百个(复数)元素组成的数组。我需要一种方法,将每三个元素相乘,并将其添加到下一批乘法中。最有效的方法是什么 比如, (myArr[0]*myArr[1]*myArr[2])+(myArr[3]*myArr[4]*myArr[5]*)+(myArr[6]*...myArr[n]) 也许这很容易做到,但我遗漏了一些东西。提前感谢假设阵列的大小是3的倍数。。。 这个代码可以工作 long long int Ans=0; for(int i=0;i<size; i+=3) {

我有一个由数百个(复数)元素组成的数组。我需要一种方法,将每三个元素相乘,并将其添加到下一批乘法中。最有效的方法是什么

比如,

(myArr[0]*myArr[1]*myArr[2])+(myArr[3]*myArr[4]*myArr[5]*)+(myArr[6]*...myArr[n])

也许这很容易做到,但我遗漏了一些东西。提前感谢

假设阵列的大小是3的倍数。。。 这个代码可以工作

long long int Ans=0;
for(int i=0;i<size; i+=3)
{
     Ans += (arr[i]*arr[i+1]*arr[i+2]);
}

我可以建议使用一个所谓的循环吗?在什么意义上是有效的?在速度方面(但我稍后会在CUDA中并行化代码-所以不是那么重要)。当数组来自代码的另一部分时,数组的大小可能会发生变化,它不一定是三的倍数,这就是为什么我不能让我的头绕过一个循环。感谢您的帮助,谢谢您的回复。然而,它不是三的倍数,这就是为什么我在努力想一种循环它的方法。测试
证明了这一点。我在写那行的时候忘记了3的倍数。。更新了它。
long long int Ans=0;
for(int i=0;i<size; i+=3)
{
     if(arr[i] && arr[i+1] && arr[i+2])//check if anyone of them is zero..
     Ans += (arr[i]*arr[i+1]*arr[i+2]);
}
while(size%3!=0)
{
     arr[size++] = 0; //or 1 
}