如何将多维向量从C ++转换为Java?

时间:2013-02-04 14:57:16

标签: java translate multidimensional-array

所以,我在C ++中轻松完成了一个项目,只是意识到我应该用Java编写它。这不会太大,除了我的代码使用多维向量,如:

vector <vector<int> > arr  

Java中是否有相同的结果可以提供相同的结果,而不必大幅重写程序?

以下是我在翻译时遇到问题的C ++程序的代码片段:

vector <vector <int> > arr;

cin >> n;

while (n > 0)
{
    vector <int> row;
    int u;

    for (int i = 0; i < n ; ++i)
    {
        cin >> u;
        row.push_back(u);
    }

    arr.push_back(row);

    n = comb(row.size(), k);
    k++;
}

for (int i = 0; i < arr.size(); i+=2)
    for (int j = 0; j < arr[i].size(); ++j)
        sum += arr[i][j];

for (int i = 1; i < arr.size(); i+=2)
    for (int j = 0; j < arr[i].size(); ++j)
        diff += arr[i][j];

3 个答案:

答案 0 :(得分:3)

ArrayList如果您将其声明为ArrayList<ArrayList<Integer>>,则应提供所需的功能。您拨打push_back()的电话相当于拨打add()。您将丢失数组索引访问符号,但可以通过将调用链接到get()来解决此问题。

答案 1 :(得分:3)

你可以使用ArrayList来调整你的代码。这是一个小例子。

 ArrayList <ArrayList<Integer>> aa = new ArrayList<ArrayList<Integer>>();
    aa.add(new ArrayList<Integer>());
    aa.get(0).add(10);

修改

你的代码看起来像这样

    ArrayList <ArrayList<Integer>> arr = new ArrayList<ArrayList<Integer>>();
    BufferedReader br = new BufferedReader (new InputStreamReader(System.in));

    int n;
    n=br.read();
    while (n>0)
    {
        ArrayList<Integer> row = new ArrayList<Integer>();
        int u;
        for (int i=0;i<n;i++)
        {
            u=br.read();
            row.add(u);

        }
        arr.add(row);
        //I don't know this function
        n=com(row.size(),k);
        k++;
    }
    for (int i=0;i<arr.size();i+=2)
        for (int j=0;j<arr.get(i).size())
            sum+=arr.get(i).get(j);

答案 2 :(得分:2)

Java也有多维向量。只需使用

ArrayList<ArrayList<Integer>>arr=new ArrayList();