给定一个二维数组
std::array<std::array<int, 2>, 3> m = {{ {1, 2}, {3, 4}, {5, 6} }};
我正在寻找其所有元素的总和 - 在这种情况下是21。如果该数组是一维的,我可以写出以下代码:auto sum = std::accumulate(m.begin(), m.end(), 0);
但是对于我的二维数组,这会失败并返回一个相当易于理解的错误。
no match for 'operator+' (operand types are 'int' and 'std::array<int, 2ul>')
如何优雅地计算我的二维数组的总和(避免使用 for 循环,更喜欢 STL 算法)?
是否可以通过一行代码解决,就像一维情况一样,还是会变得更加复杂?
21
还是{9, 12}
? - Barrystd::accumulate
更棘手,但它更通用:您可以将该迭代器用于任何算法。(如果有人想处理细节,请随时将您的代码发布为答案) - Pete Becker