C++ 是否需要在for循环中使用小于(<;)运算符进行自动矢量化?

C++ 是否需要在for循环中使用小于(<;)运算符进行自动矢量化?,c++,visual-studio-2013,C++,Visual Studio 2013,我刚刚通读了一遍,仍然不太清楚哪些循环会被矢量化 在上,我们得到了一个可以自动矢量化的循环示例: const int N = 1000; float a[N], b[N]; // Initialize a[i] = i; b[i] = 100 + i int main() { for (int n = 0; n < N; ++n) a[n] += b[n]; } const int N=1000; 浮动a[N],b[N]; //初始化a[i]=i;b[i]=100+i int ma

我刚刚通读了一遍,仍然不太清楚哪些循环会被矢量化

在上,我们得到了一个可以自动矢量化的循环示例:

const int N = 1000;
float a[N], b[N];
// Initialize a[i] = i; b[i] = 100 + i
int main() 
{
  for (int n = 0; n < N; ++n) a[n] += b[n];
}
const int N=1000;
浮动a[N],b[N];
//初始化a[i]=i;b[i]=100+i
int main()
{
对于(int n=0;n

我通常使用
n!=N
习语,与
N
相反;这和OpenMP中的一样重要吗?还是自动矢量化不管怎样都能工作?

除非你知道所有的自动矢量化是如何工作的,否则你将很难预测每个循环将要做什么。如果这对您很重要,我认为更好的方法是使用定义的
/Qvec report:2
,它应该告诉您给定的循环是否自动矢量化以及原因。

为什么不使用
/Qvec report:2
并找出原因@McAdan cool不知道那件事@麦卡登:是的,有效。改写成答案。