gpt4 book ai didi

c++ - 用更少的内存在 C++ 中实现二维数组

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:08 24 4
gpt4 key购买 nike

我需要一个二维数组,它是类的一个字段。 x 是宽度,y 是高度。

我写过这样的代码:

#include <iostream>

int main(){
char ** tab;
int x, y;
std::cin >> x >> y;
tab = new char* [x+2];
for (int i = 0; i < x+2; i++) {
tab[i] = new char [y+2];
}
}

而且它有效。问题是它占用太多内存(示例数据需要 16kb 而我只能使用 5kb)是否有一种简单(或不方便)的方法来实现它?

我能想到的唯一解决方案是在 tab[(x+2)*(y+2)] 上工作,但我必须更改整个程序并用简单的算术填充它计算数组中的位置,但这需要重写大量代码,所以我想避免这种情况。

编辑:5kb 是必需的,因为它是学校项目 :) 该程序在 96 次测试(满分 100 次)中完美运行,但在这一次上它因内存而停止。edit2:如何在一个字符中存储多个值?会不会很复杂?

最佳答案

我认为最好的方法是将它封装到二维数组类中。它适用于一维数组,但您可以使用您选择的索引通过 getter 和 setter 访问它。这是我能想到的最简单、最优雅的解决方案。

关于c++ - 用更少的内存在 C++ 中实现二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com