Wpis z mikrobloga

#cpp #algorytmy

Siema, staram sie zaimplementowac algorytm Prima dla minimalnego drzewa rozpinającego, mój problem pojawia sie w miejscu, gdzie sprawdzam jakie krawędzie należą do danego wierzchołka.
Niby jak siedze w środku funkcji to wszystko ok, jednak jak tylko jej działąnie dobiegnie końca to vector, który podaje jako ostatni argument funkcji nagle staje sie pusty. Nie mam pojęcia dlaczego

void getConnections(Apex apex, Connection* arrayConnections, int arraySize, std::vector vectorConnections) {
int apexNumber = apex.number;
int tmpWage;
Connection tmpConnection;

for (int i = 0; i < arraySize; i++) {
tmpWage = arrayConnections[i].wage;
if (arrayConnections[i].firstApexNumber == apexNumber || arrayConnections[i].secondApexNumber == apexNumber) {
if (vectorConnections.size() == 0) {
tmpConnection = arrayConnections[i];
vectorConnections.push_back(tmpConnection);
arrayConnections[i].isUsed = true;
}
else {
for (int j = 0; j < vectorConnections.size(); j++) {
if (arrayConnections[i].isUsed == true) {
std::cout << "this connection is already in vector: " << arrayConnections[i] << std::endl;
}
else {
tmpConnection = arrayConnections[i];
vectorConnections.push_back(tmpConnection);
arrayConnections[i].isUsed = true;
}
}
}
}
}
std::sort(vectorConnections.begin(), vectorConnections.end(), Connection());
}

Wywołanie w mainie:

getConnections(arrayApex[1], arrayConnections, numberOfConnections, vectorConnections);
chciałbym potem robić dalsze operacje na wektorze 'vectorConnections', jednak ja wspominałem jest on pusty (w ciele funkcji zapełnia sie poprawnie, sprawdzałem pod debbugerem)
Ktoś coś? z góry dzięki za jakiekolwiek wskazówki
  • 3