用常量减去指针数组的最快方法

时间:2017-12-06 02:52:16

标签: c++ arrays pointers

我有一个非常大的类型数组(短*)。如何以最快的方式将所有值减去常量?

2 个答案:

答案 0 :(得分:0)

使用for循环确实是最有效的方法

short *arr = new short[1000000];
const short c = 8504;

//populate the array
     Populate(arr); //just some method to populate the array

    for(int i=0;i<1000000;i++){
      arr[i] = c - arr[i] ;//subtract from the constant
    //or even
    //*arr = c - *arr++ ; 
    }

此代码不会检查类型溢出。

答案 1 :(得分:0)

如果您不需要重新计算实际值,可以根据使用情况进行临时计算:

#include <iostream>
using namespace std;

struct OffsetShort {
    short value;
    static short offset;
    operator short() const { return value - offset; }
};
short OffsetShort::offset = 0;
int main() {
    OffsetShort *vals[] = {new OffsetShort{1},new OffsetShort{2},new OffsetShort{3}};
    for (auto f : vals) {
        cout << *f;
    }
    OffsetShort::offset = 10;
    for (auto f : vals) {
        cout << *f;
    }
    return 0;
}

打印

123
-9-8-7