C ++ vector,java数组等价吗?

时间:2013-10-20 19:54:17

标签: java c++ arrays vector

在c ++中我们可以有这样的向量:

vector < int > v[20];

我必须在c ++中用java创建等效的程序。我可以宣布

static ArrayList < ArrayList<Integer > > v;

但这不是我想要的。我希望它更直观。 我试图找到一种方法来轻松添加我的结构中的元素。 例如,如果我有一个图表并且我正在读取从a到b的道路,那么在C ++中只需使用v [a] .push_back(b)。

3 个答案:

答案 0 :(得分:1)

首先,vector<int> v[20]不是矢量的矢量。

其次ArrayList可能相当于Java中的std::vectors

vector.push_back的一般等价物可能是这样的,即使用通用列表: -

List<Integer> x = new ArrayList<Integer>();
x.add(1);

答案 1 :(得分:1)

    List<Integer>[] v = (List<Integer>[]) Array.newInstance(Integer.class, 20);
    {
        for (int i = 0; i < v.length; ++i) {
            v[i] = new ArrayList<>();
        }
    }

可悲的是,Java在这里并不是那么简洁或精心设计的。 Array.newInstance适用于所有维度:int[][][]Array.newInstance(int.class, 10, 10, 10)。因此它返回一个Object作为最小分母,并且需要被强制转换。

初始数组只包含空值,需要初始化。

校正:

当然应该List.class而不是Integer.class

答案 2 :(得分:1)

import java.util.Vector;


public class Main {


    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Vector<Integer>[] anArray = (Vector<Integer>[]) new Vector[100];
        for(int i = 0; i < anArray.length; i++)
           anArray[i] = new Vector<Integer>();
        anArray[2].add(2);//....
    }

}