如何实现无限多维数组
How to implement infinite multidimensional array?
我想使用以下代码,我想将其用于"未知的输入大小"。例如,有一个数组int cac[1000][1000]
.我可以使用vector<vector<int> > array;
,那么如何使用-1
初始化它?有什么建议吗?
#include <sstream>
#include <iostream>
#include <vector>
#include <cstdlib>
#include <memory.h>
using namespace std;
int cac[1000][1000];
string res[1000][1000];
vector<string> words;
int M;
int go(int a, int b){
if(cac[a][b]>= 0) return cac[a][b];
if(a == b) return 0;
int csum = -1;
for(int i=a; i<b; ++i){
csum += words[i].size() + 1;
}
if(csum <= M || a == b-1){
string sep = "";
for(int i=a; i<b; ++i){
res[a][b].append(sep);
res[a][b].append(words[i]);
sep = " ";
}
return cac[a][b] = (M-csum)*(M-csum);
}
int ret = 1000000000;
int best_sp = -1;
for(int sp=a+1; sp<b; ++sp){
int cur = go(a, sp) + go(sp,b);
if(cur <= ret){
ret = cur;
best_sp = sp;
}
}
res[a][b] = res[a][best_sp] + "n" + res[best_sp][b];
return cac[a][b] = ret;
}
int main(int argc, char ** argv){
memset(cac, -1, sizeof(cac));
M = atoi(argv[1]);
string word;
while(cin >> word) words.push_back(word);
go(0, words.size());
cout << res[0][words.size()] << endl;
}
你可以
做的是使用一个关联数组,其中键是一对(rowPosition
,ColumnPosition
)。如果要设置array[i][j]
只需添加或更新值assoArray[Pair(i,j)]
。您可以假设不在关联数组中的任何元素都具有初始值。
一般来说,无限多维数组用于理论目的。我希望我没有误解这个问题。
使用 STL 中的 std::vector 比以下解决方案简单得多,在这篇文章的评论中指出了这一点。我发现这个网站有效地解释了这个主题:http://www.learncpp.com/cpp-programming/16-2-stl-containers-overview/
无限大小的数组实际上是不可能的。但是,基本上可以使用动态分配来实现该效果。下面是一些示例代码:
int counter = 0;
int* myArray = new int[1000];
用数据填充数组,每次添加值时递增计数器。当计数器达到 1000 时,请执行以下操作:
int* largerArray = new int[2000];
for( int i = 0; i < 1000; i++ )
{
largerArray[i] = myArray[i];
}
delete[] myArray;
myArray = largerArray;
使用这种方法,您可以创建最接近无限大小的数组,并且我不相信复制部分的性能会成为问题。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- 我的c ++数组值不想改变,它输出无限循环
- 在C++中创建无限数组
- 字频 strcmp 使用结构数组无限工作
- 比较二维数组中的数字时的无限循环
- 读取文件中的数字数量无限,存储在数组中(无空间)
- 无限数组C++在一个表达式中使用两个新值调整数组大小
- 在数组上使用时最大堆无限循环,但不用于向量
- C++用户输入到字符串数组的无限循环
- 如何实现无限多维数组
- 这是一个具有基于数组的列表函数的数据结构项目,我似乎无法摆脱这个无限循环。
- 我认为做而正在进入无限循环.或数组.(运行时错误)
- 与所属的类具有相同类型对象的数组是否会创建无限个实例?
- 使用指向数组的指针实现无限大小的堆栈
- 最小堆通过二叉树的数组表示;MoveDown函数无限循环
- 访问无限数组元素
- c++无限参数数组
- 需要帮助创建Arduino (c/c++)的无限数组