如何初始化容器结构不知道它的大小?



我是c++的业余爱好者,我正在编写一个科学计算代码。我定义了一个结构体来存储从文件输入的所有数据。在结构体中,我有几个2D和1D数组,它们的维度取决于数据输入,因此我需要根据数据输入动态定义结构体。如何在c++中实现这个目标?谢谢大家的帮助!

有几种方法可以实现这一点,这取决于您如何解析输入甲板。最简单的方法是通过std::vector,它是标准模板库的一部分。它们使用动态内存,并将在堆上分配。您可以执行如下操作:

// simple prototype of your struct
struct input_data{
std::vector<double> one_d_data;
std::vector<std::vector<double>> two_d_data;
};
// ad-hoc example of parsing and adding data to the 1d data container
while(still_parsing){
double value = parser.get_next_1d_value();
input_data.one_d_data.push_back(value);
}

2d的情况实际上取决于你对数据的了解程度。如果你知道所有的元素都是一个标准的3分量向量或9分量张量,那么你可以预先分配它们。

无论哪种方式,听起来你应该读一些关于std::vector的书,并为你的设计确定最佳的前进道路。

最新更新