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

为动态二维数组添加#形外边框的技术实现疑问

问题解答:为动态二维数组添加完整外边框

一、实现顶部和底部边框的方法

在现有代码的基础上,只需在输出中间网格行的前后,各添加一行由#组成的边框即可。边框的长度要和中间行的总字符数一致:中间行是# + maxY个0 (每个数字加空格) + #,总长度为 2 + maxY * 2。

修改后的完整代码如下:

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

void displayCity(int minX, int maxX, int minY, int maxY)
{ 
    // 输出顶部边框
    int borderLen = 2 + maxY * 2;
    cout << string(borderLen, '#') << endl;

    // 输出中间网格行
    for (int i = 0; i< maxX; ++i)
    {
        cout << '#';
        for (int j = 0; j < maxY; ++j)
        {
            cout << 0 << ' '; // 直接输出0,无需动态数组
        }
        cout << '#' << endl;
    }

    // 输出底部边框
    cout << string(borderLen, '#') << endl;
}

修改后输出效果:

##################
#0 0 0 0 0 0 0 0 #
#0 0 0 0 0 0 0 0 #
#0 0 0 0 0 0 0 0 #
#0 0 0 0 0 0 0 0 #
#0 0 0 0 0 0 0 0 #
#0 0 0 0 0 0 0 0 #
#0 0 0 0 0 0 0 0 #
#0 0 0 0 0 0 0 0 #
##################

二、原实现的合理性分析

原实现存在几个明显的优化点:

  • 无需动态分配数组:你只是将数组元素赋值为0后输出,完全可以直接输出0,既节省内存,又避免了手动管理内存的潜在风险(比如内存泄漏)。
  • 冗余参数未使用:minX和minY两个参数在代码中没有任何作用,建议要么删除,要么根据实际需求利用这两个参数调整输出范围。
  • 多余的格式控制:输出右侧#时使用setw(1)是冗余操作,直接cout << '#'即可达到相同效果。

内容的提问来源于stack exchange,提问作者Best Jeanist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:03:12