Программа, имеющая дело с представлением и преобразованием графов (из теории графов). Список смежности и матрица реализованы как динамические массивы векторов (не спрашивайте, почему не вектор вектора) для следующей функции, которая завершается с ошибкой памяти компилятор, указывающий на определение потерянного вектора.
int vertex,edges;
vector<int> *adjacencyList,*adjacencyMatrix;
void listToAdMatrix(int vertexNumber, vector<int> *List, vector<int> *Matrix){
int in=0,cont=0;
for(int i=0;i<vertexNumber;i++){
in=i;
for(auto j=List[in].begin();j!=List[in].end();j++){
for(int k=0;k<vertexNumber;++k){
if(k==*j) Matrix[cont].push_back(1);
else Matrix[cont].push_back(0);
}
cont++;
}
}
}
//function call
//vertex(number) and ajacencyList are initialized
adjacencyMatrix=new vector<int>[vertex];
listToAdMatrix(vertex,adjacencyList,adjacencyMatrix);
«Источник ошибки» в STL, на который указывает компилятор:
http://i51.tinypic.com/2dt0t9e.jpg
Сообщение об ошибке:
Необработанное исключение в 0x001a543b в graph.exe: 0xC0000005: Место чтения нарушения прав доступа 0xfdfdfe01.
функция fillList, используемая для заполнения списка смежности:
void fillList(int vertexNumber, vector<int> *List){
int input=0;
for (int i=0;i<vertexNumber;i++){
int in=i;
cout<<"Introduce adjacent vertexes for the vertex -"<<i+1<<"-:"<<endl;
for(int j=0;j<vertexNumber;j++){
std::cout<<i+1<<"-";
std::cin>>input;
if(input==0) break;
List[i].push_back(input-1);
}
}
}
Любая подсказка приветствуется.