如何在C ++中创建动态二维数组?

时间:2016-01-01 15:21:18

标签: c++

我在课程中使用c ++并且为了解决程序我应该创建一个可能在维度上有所变化的数组。 例如:

package {

import flash.display.Sprite;

public class Main extends Sprite {
    private var actionQueue:Array = new Array();
    public function Main() {
        var action:ActionBase;
        var foobar1:ActionBase = new ActionBase();
        actionQueue[actionQueue.length] = foobar1;
        actionQueue[actionQueue.length] = new ActionBase();
        actionQueue[actionQueue.length] = Object;
        for (var i:int = 0; i < actionQueue.length; ++i)
        {
            action = actionQueue[i] as ActionBase;
            if (action != null && action is ActionBase)
            {
                action.step();

                if (action.done())
                {
                    trace("all done");
                }
            }
        }

    }
}
}

class ActionBase {
    var _done:Boolean = false;
    function ActionBase() {
    }
    function done():Boolean {
        trace(done);
        return _done;
    }
    function step() {
        _done = true;
        trace(step);
    }
}

2 个答案:

答案 0 :(得分:5)

与动态数组一样,请使用std::vector

unsigned I, J;
std::cin >> I >> J;
if (!std::cin) {
    // handle error
}
std::vector<double> X(I * J);

在索引(ij)获取/设置元素:

X.at(i * J + j) = 1;
std::cout << X.at(i * J + j);

答案 1 :(得分:2)

如果您想在c ++中使用已分配和初始化的二维动态数组,请使用WEB_CONCURRENCY: 3,如下所示:

std::vector

构造函数保留并初始化所需的元素。 Yo可以使用#include <vector> int I,J; cin>>I; cin>>J; std::vector<std::vector<double>> X( I, std::vector<double>( J, 0.0 ) ); 访问它,operator []会为您提供元素数量。

无论如何,你应该更喜欢Elyse的解决方案。