1

所以,我用 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];
4

3 回答 3

3

ArrayList如果您将其声明为ArrayList<ArrayList<Integer>>. 您对push_back()的调用等同于对 的调用add()。您将丢失数组索引访问表示法,但这可以通过链接调用来解决get()

于 2013-02-04T15:03:36.763 回答
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);
于 2013-02-04T15:06:01.883 回答
2

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

ArrayList<ArrayList<Integer>>arr=new ArrayList();
于 2013-02-04T15:02:52.820 回答