Zwei Arrays verknuepfen
-
Hallo
und erstmal Lob, tolles Forum.
Folgendes Problem:
Ich arbeite an einer Parallelversion einer Fluid dynamik Simulation, zunaechst einmal habe ich ein 2D Array welches meine Werte beinhaltet.0 0 0
0 0 0
1 1 1Ich verwende im naechsten Schritt ein Decomposition Tool ("Metis") welche mir die optimal Aufteilung fuer meine paralellisierung zurueckgibt. Also hier z.B so etwas
0 0 0
0 0 1
1 1 1Was in diesem Kontext jetzt bedeuten wuerde ich habe zwei Teile einmal alle Elemente die in Partition 0 sind und alle Elemente in Partition 1. Im naechsten Schritt muessen die Elemente einen neuen Index bekommen sieht dann z.B so aus
1 2 3
4 5 1
2 3 4So jetzt zum eigentlichen Problem, ich suche einen moeglichst eleganten Weg (mapping, Pointer,..) welches mir immer ermoeglicht die Beziehung zwischen zwei Zellelementen zu haben. also Wenn ich z.B in meinem letzten Array Element [0] (hier 1) anspreche sollte der Bezug zum ersten Array in meinem Post da sein und ich den Wert 0 zurueckbekommen.
Waere super wenn jemand ein paar Tips haette.
Vielen Dank schon mal und Gruss
Markus
-
Also ist das Gesamtproblem, wenn ich das recht verstehe, im Prinzip eindimensional? Dann benutz doch auch eine eindimensionale Struktur! Und dann ist deine Aufteilung in Partitionen bloß noch ein Offset.
-
template<class T> struct ArrayPairWrapper { std::vector<T> First, Second; T& SearchInSecondAndGiveFirst(const T& Target) const { std::vector<T>::iterator Result = std::find(Second.begin(), Second.end(), Target) != Second.end() if(Result != Second.end()) return *(First.begin() + (Result - Second.begin())); else //Nichts gefunden } };