减去常数或将常数添加到大数组c ++

问题描述 投票:1回答:2

我有一个很大的uint8_t数组(大小= 1824 * 942)。我想对每个元素执行相同的操作。特别是我需要从每个元素中减去-15。

此数组每秒刷新20次,所以时间是个问题,我要避免在数组上循环。

是否有简单的方法可以做到这一点?

c++ arrays math pointer-arithmetic integer-arithmetic
2个回答
0
投票

您可以编写一个简单的函数:

void add(uint8_t* a, size_t a_len, uint8_t b) {
    for(uint8_t* ae = a + a_len; a < ae; ++a)
        *a += b;
}

并且希望编译器为您进行矢量化处理,请参见assembly


0
投票

您可以创建一个结构(或类),该结构(或类)将保存该数组中所有元素所共有的参数。

struct arr
{
    uint8_t* arr;
    uint8_t delta;
}
© www.soinside.com 2019 - 2024. All rights reserved.