过载操作员<&书信电报;求二维数组和的方法 我在C++中做了一些练习题。我遇到了一个问题,我想找到二维数组的元素之和。我可以编写一个get sum方法来返回和。但是我在探索“操作符

过载操作员<&书信电报;求二维数组和的方法 我在C++中做了一些练习题。我遇到了一个问题,我想找到二维数组的元素之和。我可以编写一个get sum方法来返回和。但是我在探索“操作符,c++,arrays,algorithm,multidimensional-array,operator-overloading,C++,Arrays,Algorithm,Multidimensional Array,Operator Overloading,是否可以通过为操作符使用提供模板重载来获得所需的输出,因为数组中的内存是线性的,所以可以使用数组的开始和结束作为迭代器 #include <iostream> #include <numeric> int main() { int arr[5][5] = { {1,2,3,4,5}, {2,3,4,5,6}, {3,4,5,6,7}, {4,5,6,7,8}, {

是否可以通过为
操作符使用提供模板重载来获得所需的输出,因为数组中的内存是线性的,所以可以使用数组的开始和结束作为迭代器

#include <iostream>
#include <numeric>  

int main()
{
    int arr[5][5] = { {1,2,3,4,5},
            {2,3,4,5,6},
            {3,4,5,6,7},
            {4,5,6,7,8},
            {5,6,7,8,9} };
    int sum = 0;
    sum += std::accumulate(arr[0], arr[0]+sizeof(arr)/sizeof(arr[0][0]), 0);
    std::cout << "Sum of array arr[5][5]: " << sum << "\n";


}
#包括
#包括
int main()
{
int arr[5][5]={{1,2,3,4,5},
{2,3,4,5,6},
{3,4,5,6,7},
{4,5,6,7,8},
{5,6,7,8,9} };
整数和=0;
sum+=std::累加(arr[0],arr[0]+sizeof(arr)/sizeof(arr[0][0]),0);

我在这里用的短语是“颠覆期望”。这是一件坏事。
operator有两件事你当然可以滥用“输出运算符”“只打印总数。但这真的是你想在这里实现的吗?@sweenish所指的是。不完全是OP要求的,而是他实际需要的。我喜欢它。”——)
#include <iostream>
#include <numeric> // std::accumulate

template<std::size_t M, std::size_t N> 
std::ostream& operator<<(std::ostream& out, const int (&arr)[M][N]) /* noexcept */
{
    int sum = 0;
    for (std::size_t i = 0; i < M; ++i)
    {
#if false // either using `std::accumulate`        
        sum += std::accumulate(arr[i], arr[i] + N, 0);

#elif true // or using for- loop
        for (std::size_t j = 0; j < N; j++)
            sum += arr[i][j];
#endif
    }
    return out << sum;
}
#include <iostream>
#include <numeric>  

int main()
{
    int arr[5][5] = { {1,2,3,4,5},
            {2,3,4,5,6},
            {3,4,5,6,7},
            {4,5,6,7,8},
            {5,6,7,8,9} };
    int sum = 0;
    sum += std::accumulate(arr[0], arr[0]+sizeof(arr)/sizeof(arr[0][0]), 0);
    std::cout << "Sum of array arr[5][5]: " << sum << "\n";


}