C++ 是否可以在使用Cilk Plus数组表示法的'if'块语句中使用''.'秒'.'隐式'.'索引'?

C++ 是否可以在使用Cilk Plus数组表示法的'if'块语句中使用''.'秒'.'隐式'.'索引'?,c++,arrays,conditional-statements,cilk,cilk-plus,C++,Arrays,Conditional Statements,Cilk,Cilk Plus,我的目标是基于隐式索引值,使用Cilk Plus数组表示法和英特尔icc编译器版本13.1.3 20130607,有条件地为数组赋值 考虑以下代码: T test[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; if(test[:] < 5) { test[:] = 10 - __sec_implicit_index(0); } 注意尽管这看起来像是链接错误,但事实并非如此,因为以下代码编译并运行良好(该条件已被删除):

我的目标是基于隐式索引值,使用Cilk Plus数组表示法和英特尔
icc
编译器版本
13.1.3 20130607
,有条件地为数组赋值

考虑以下代码:

    T test[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    if(test[:] < 5) {
        test[:] = 10 - __sec_implicit_index(0);
    }
注意尽管这看起来像是链接错误,但事实并非如此,因为以下代码编译并运行良好(该条件已被删除):

那么,我的问题是:是否可以使用Cilk Plus数组表示法来完成下面条件代码的行为

    T test[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    for(int i = 0; i < 10; i++) {
        if(i < 5) {
            test[i] = 10 - i;
        }
    }
T检验[10]={0,1,2,3,4,5,6,7,8,9};
对于(int i=0;i<10;i++){
如果(i<5){
试验[i]=10-i;
}
}

示例是正确的。问题是icc 13.1.3中的一个错误。icc 14.0测试版为我正确编译并执行了该示例

对于icc 13.1.3,我发现#pragma simd作为一种表示允许向量化的方式,总体上更可靠。使用它,您的示例如下所示:

T test[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
#pragma simd
for(int i = 0; i < 10; i++) {
    if(i < 5) {
        test[i] = 10 - i;
    }
}
T检验[10]={0,1,2,3,4,5,6,7,8,9};
#布拉格语
对于(int i=0;i<10;i++){
如果(i<5){
试验[i]=10-i;
}
}

它当然失去了数组表示法的方便性

谢谢,太好了!另外,感谢您提供有关
#pragma simd
的提示!我现在记得在文档中略过了这一点,但我已经完全忘记了。
    T test[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    for(int i = 0; i < 10; i++) {
        if(i < 5) {
            test[i] = 10 - i;
        }
    }
T test[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
#pragma simd
for(int i = 0; i < 10; i++) {
    if(i < 5) {
        test[i] = 10 - i;
    }
}