C++ std::reduce 与数组

Jav*_*han 3 c++ iterator stl std

int arr1[5] = { 1,2,3,4,5 };
int sum = reduce(arr1[0], arr1[5]);
Run Code Online (Sandbox Code Playgroud)

我编写此代码是为了将该std::reduce函数与整数数组一起使用。我应该如何定义数组的开头和结尾?

asm*_*mmo 5

在数组上使用std::cbegin()and :std::cend()

#include <iostream>
#include <numeric>
int main(){
    int arr1[5] = { 1,2,3,4,5 };
    int sum = std::reduce(std::cbegin(arr1), std::cend(arr1));
    std::cout << sum;
}
Run Code Online (Sandbox Code Playgroud)

演示

  • @Tony,如果它作为“T[size]”(这是一个特定大小的数组)传递,而不是“T[]”(它衰减为指针)。请参阅[此处](https://en.cppreference.com/w/cpp/iterator/end)。尝试在原始指针上使用“std::begin()”或“std::end()”将导致编译错误。 (4认同)
  • 当您有一个正在迭代的数组,但随后决定将其升级到 STL 容器时,使用 std::begin(T) 和 std::end(T) 的好处就会显现出来。现在,您不必梳理所有代码并将“arr1, arr1 + 5”替换为“arr1.begin(), arr1.end()”。 (4认同)
  • @Javadkhan 使用 [reduce(arr1, arr1+5);](https://godbolt.org/z/Y6nf5M) (3认同)