You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何实现二维vector元素的垂直打印

调整思路
  • 原代码是先行后列遍历,优先输出同一行的所有元素,所以是横向输出效果
  • 要实现垂直打印,需要改成先列后行遍历:优先输出所有行同一列位置的元素,直到遍历完最长行的最后一列为止
  • 额外需要先计算所有子vector的最大长度,作为外层循环的终止条件
调整后完整代码
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    vector<vector<int>> a  { {1,2,3,4,5}, {6,7,8}, {9,10,11} };
    
    // 计算所有子vector的最大长度,即需要输出的总行数
    size_t max_col = 0;
    for (auto &row : a) {
        max_col = max(max_col, row.size());
    }
    
    // 外层循环遍历列索引,对应输出结果的每一行
    for (size_t j = 0; j < max_col; j++) {
        // 内层循环遍历所有行,取当前列位置的元素
        for (size_t i = 0; i < a.size(); i++) {
            // 仅当前行存在第j个元素时输出,避免数组越界
            if (j < a[i].size()) {
                cout << a[i][j] << " ";
            }
        }
        cout << endl;
    }
    return 0;
}
代码说明
  • 计算得到的max_col就是最长子vector的长度,对应你需要输出的垂直打印结果的总行数
  • 外层循环每次处理所有行的第j个元素,处理完成后换行,正好对应垂直打印的一行输出
  • 增加了越界判断,适配不同长度的子vector场景

内容的提问来源于stack exchange,提问作者Yasiru Lelwala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:48:00