【发布时间】:2017-08-30 17:58:45
【问题描述】:
我正在尝试声明一个具有可变维数(用户输入)的多维向量。
这是我所拥有的:
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector< double > data;
int main() {
int numberDimensions = 4;
for (int it = 0; it < numberDimensions; it++){
// Nor sure what to put here
}
return 0;
}
另一种解决方案是在开始时使用 if 语句,但我想知道是否存在另一种解决方案?
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int numberDimensions = 4;
if (numberDimensions==0)
cout << 'error' << endl;
else if (numberDimensions==1)
vector< double> data;
else if (numberDimensions==2)
vector< vector< double> > data;
else if (numberDimensions==3)
vector< vector< vector< double> > > data;
else if (numberDimensions==4)
vector< vector< vector< vector< double> > > > data;
return 0;
}
感谢您的任何建议,
【问题讨论】:
-
嵌套向量不会给你非常好的性能。考虑使用具有不同索引计算的双精度向量。
-
您的解决方案不是很有用。您将无法在这些分支之外使用
data。您需要为每个分支重现整个应用程序逻辑(推荐模板)。考虑定义一个大小等于所有维度大小乘积的单个向量。 -
对于单独的问题,这似乎是一个非常笨拙的解决方案。也许如果您告诉我们更多关于您要完成的工作,我们可以提供更好的解决方案?
-
感谢您的建议,这是对我的问题的更完整描述:我的程序输入一个配置文件,其中用户定义了一组参数(名称、起始值、结束值和编号)参数的值)。我采用这些参数并迭代用户想要的所有值。对于每组参数,我都有一个要保存到文件的结果向量。为了避免每个参数集只有一个文件,我试图将所有结果放入一个多维向量中,然后保存该向量。
-
您能否添加一个示例,说明您的配置文件的外观以及您想要实现的目标。
标签: c++ multidimensional-array vector