在C ++中创建可变数量的向量

ins*_*ity 4 c++ vector

我可以n*m通过执行以下操作 来创建尺寸为2D的数组vector< vector< int > > foo(n, vector< int > (m))

假设在运行时给了我可变数量的值,例如v_1, v_2, v_3, ..., v_k,想要创建以下内容:

vector< vector< ... vector< int > ... > > foo(v_1, vector< ... > (v_2, vector< ... > ..));

换句话说,创建一个多维的size数组v_1* v_2 * v_3 ... *v_k。我怎样才能做到这一点?这可能吗?

Pup*_*ppy 5

您需要boost::variant,它可以处理此问题。您可以创建一个recursive_wrapper,使您可以任意嵌套内容。还有其他方法,例如一个大的平面数组,或者可以使用继承和动态分配,但是它们涉及很多麻烦。

typedef boost::variant<
    int,
    std::vector<boost::recursive_variant_>
> variant;

int main() {
    std::vector<variant> var; // Assume at least 1 dimension
}
Run Code Online (Sandbox Code Playgroud)