Я новичок в C++, и я работал над векторами, а не только на 2D-векторах. Я много занимался, но данные в Интернете очень специфичны для 2D-векторов. Мне нужно построить граф, заданный входным файлом, а затем применить алгоритм Крускала для минимального связующего дерева.Реализация смежной матрицы с 2D-векторами C++
Мой подход:
A1, A2, A3.....An would be the first row and col of my 2d Vectors and they will
contain name. I will read the input file and start matching the names.
And then at graph[i][j] I will put the weight.
A1 A2 A3......
A1 w w w .......
A2 w w w .......
A3 w w w .......
. . . . Теперь я пытаюсь что-то вроде этого:
struct mat{
string name;
}
int main(){
vector<vector<mat>> matrix;
// In order to insert
vector<mat> tempVec;
tempVec[0].name = "stack";
matrix.push_back(tempVec);
}
Теперь я понятия не имею, что, когда я tempVec[0].name
, 0 указывает, какая строка или седловины из Матрицы. Если он указывает строку, то как узнать, к какому столбцу обращаются. Я имею в виду vector.push_back(tempVec)
, присваивает данные позиции в моей матрице. Я знаю, что могу получить доступ к отдельным элементам, таким как Matrix [i] [j]. Но как я могу назначить вес определенной строке, позиции столбца, а затем получить доступ к ней.
Как вы думаете, будет ли это хорошей реализацией для метода Крускала.
Просьба быть проста в вашем коде и пояснять. И спасибо заранее.
уверен, что это не матрица.push_back (tempVec); ? –
См. Http://stackoverflow.com/questions/5493474/graph-implementation-c – Bull
@ user2151446 Я хочу сделать это с помощью 2d векторов. Я думаю, это будет намного проще. –