2

在 C++ 中,我们可以有这种向量:

vector < int > v[20];

我必须在 c++ 中创建程序的 java 中的等价物。我可以声明

static ArrayList < ArrayList<Integer > > v;

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

4

3 回答 3

1

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

其次, ArrayList可能相当于std::vectorsJava 中的。

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

List<Integer> x = new ArrayList<Integer>();
x.add(1);
于 2013-10-20T20:00:33.510 回答
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

于 2013-10-20T20:25:35.093 回答
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);//....
    }

}
于 2013-10-30T20:04:25.470 回答