初始化包含所有条目0的2d动态数组

时间:2013-12-29 17:15:51

标签: c++ arrays dynamic graph dijkstra

是否可以创建一个动态数组,其中的所有条目都等于0?

 int** adjMatrix;
 adjMatrix= new int*[numOfVertices];
for(int i=0; i<numOfVertices; i++){
    adjMatrix[i]=new int[numOfVertices];
}

另外, 我被要求在图表中找到最长的路径。我在考虑使用Dijsktra算法将所有权重乘以-1后以正常方式运行程序。然后我将再次乘以-1并获得最长的路径。我认为这应该给我最长的路径,你认为它会起作用吗?而且,我正在处理相当大的数据,例如1.000.000节点等,我的时间限制为2秒,内存限制为128mb。你能建议任何其他数据结构而不是Adjacency Matrix吗?因为我很确定它会超出极限。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

  

是否可以创建一个动态数组,其中的所有条目都等于0?

使用值初始化

for(int i=0; i<numOfVertices; i++){
    adjMatrix[i]=new int[numOfVertices]();
    //                                 ^^
}

答案 1 :(得分:0)

最快的方法是仅在数组在内存中连续时才使用memset。因此,为此,您应该首先分配一维数组。