具有不同大小的2D结构数组成员变量

时间:2014-06-25 21:03:49

标签: c++ arrays struct

所以我有一个我正在推广到基类的类。其中一个成员变量是结构的2D数组。

struct SomeType
{
...
}

然后在课程的标题中:

SomeType member_variable_ [SIZE_ONE][SIZE_TWO];

但是,在我的情况下,需要在初始化类时设置SIZE_TWO,因为根据使用它的不同,它会有所不同。如果2D结构数组的大小尚未设置为成员变量,那么最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

解决它的最简单方法是根本不使用C风格的数组,而是使用std::vector。或者可能是std::array个向量:

std::array<std::vector<SomeType>, SIZE_ONE> member_variable_;

现在,您可以根据需要轻松插入尽可能多的(或少数)SomeType个对象,并仍然使用数组索引语法:

member_variable_[some_index][some_other_index]

要在运行时为“第二个”维度设置固定大小,您可以在构造函数中执行以下操作:

for (auto& v : member_variable_)
    v = std::vector<SomeType>(the_runtime_size);

答案 1 :(得分:1)

您可以使用模板:

template<unsigned SIZE_TWO>
class theClass
{
     SomeType member_variable_ [SIZE_ONE][SIZE_TWO];
实例化类时将设置

SIZE_TWO

theClass<5> tc; //member_variable_ [SIZE_ONE][5];

您还可以使用std::vectorstd::array等容器。