【问题标题】:Function for subtracting scalar from each element of an array从数组的每个元素中减去标量的函数
【发布时间】:2012-10-31 06:41:58
【问题描述】:

我想从缓冲区 B 中的每个值中减去一个特定值。因此,例如,如果缓冲区 B 包含以下值;

1000 1500 2000 200

那么如果要减去的值是5,那么输出应该是:

995 1495 1995 195

此外,如果差值为负,则应截断为 0。

我知道有一些简单的方法可以做到这一点,但我是一个懒惰的人,我正在为此目的寻找一些功能。

C/C++ 中有什么函数可以做到这一点吗?

更新 基本上,与我的琐碎循环方法相比,我希望该功能将得到更多优化。我的缓冲区有 5000000 个值,这将连续在数千个这样的缓冲区上执行。

【问题讨论】:

  • 为什么不写一个循环呢?我认为您不会在 C/C++ 中找到这样的函数。但是,boost 可能有一些。
  • 懒惰对程序员不利.......:P

标签: visual-c++ stl


【解决方案1】:

这样的一个函数:

void SubtractArray(vector<int>& coll)
{
    transform(coll.begin(), coll.end(), coll.begin(), [](int elem){
        return elem - 5 < 0 ? 0 : elem - 5;
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    相关资源
    最近更新 更多