如何使用std::for_each实现C++ std::vector矩阵的列遍历求和
列求和的std::for_each实现方法
完全可以用类似写法实现列遍历求和,原理是遍历矩阵的每一行,取每行目标列的元素累加即可,前提是保证矩阵所有行的长度大于目标列索引,避免越界。
实现代码
int col_sum = 0; int target_col = 1; // 替换为你需要求和的目标列索引 // 边界校验可选,建议加上避免越界 if (!matrix_.empty() && target_col < matrix_[0].size()) { std::for_each(matrix_.begin(), matrix_.end(), [&](const std::vector<int>& row) { col_sum += row[target_col]; }); }
说明
- 和行求和的逻辑刚好对应:行求和是遍历单行的所有元素累加,列求和是遍历所有行,取每行对应目标列的元素累加
- 必须保证矩阵是规则结构(所有行的长度一致),如果存在行长度小于目标列索引的情况,会触发未定义行为
- 如果需要统计所有列的和,只需要在外层套一层遍历列索引的循环即可
内容的提问来源于stack exchange,提问作者Andreimek
相关产品推荐
相关产品推荐

