I die folgenden Vektoren:Überschneidung von Vektor des Paares C++
vector<unsigned> A,B1;
vector<pair<unsigned,unsigned> > B2;
Ich will die Kreuzung von (A,B1)
und dann den Schnittpunkt der (A,B2)
auszuführen. Ich möchte dann die Vereinigung der beiden Kreuzungsergebnisse durchführen. Die Vektoren A
und B1
enthalten sortierte vorzeichenlose Ganzzahlen und der Vektor B2
enthält Paare von (start,end)
Werten. Beispielvektoren A
und B2
, und deren Kreuzungsvektor wird unten dargestellt:
vector<unsigned> A(2,4,6,8,9,10,34,74,79,81,89,91,95);
vector<pair<unsigned,unsigned> > B2={ {2, 3}, {29, 40}, {60, 85} };
vector<unsigned> intersection; //result of intersection of A and B2 -> Procedure of performing intersection is explained below
//intersection=(2,34,74,79,81);
2
in Kreuzung als in 2
{2,3}
ist. Ebenso liegt 34
im Schnittpunkt wie 34
liegt zwischen {29,40}
. Ähnlich liegen 74
, 79
, 81
im Schnittpunkt, da sie innerhalb des Bereichs B2
des letzten Elements {60,85}
liegen.
Gibt es eine effiziente Art und Weise, durch die ich die gleichen Ergebnisse wie erhalten können:
(1). Kreuzung A
und B1
; (2). Schnittpunkt von A
und B2
; (3). Vereinigung der beiden in Schritt 1 und 2 durchgeführt Kreuzungen (d Kreuzung (A,B1)
und (A,B2)
)
Ja, es ist: Ihre eigenen effizienten Code schreiben, dies zu tun. Es gibt keine existierende Funktion in der C++ - Bibliothek, die diesen hochspezifischen Algorithmus implementiert, also liegt es an Ihnen, sie für Ihren eigenen Code zu schreiben. Viel Glück. –