So erhalten Sie einen Bereich, um Container in Varianten zu schleifenC++

Programme in C++. Entwicklerforum
Anonymous
 So erhalten Sie einen Bereich, um Container in Varianten zu schleifen

Post by Anonymous »

Ich muss einige Elemente bestimmter IDs abbilden, ElementIDs, um Knoten -IDs in einem Diagramm zu starten. Ich muss nur IDs der Elemente speichern, damit wir im Allgemeinen nur mit Sätzen oder Vektoren von size_t arbeiten können. Im Allgemeinen gibt es Millionen von Elementen, die in Chargen hinzugefügt werden, um einer einzigen ID zugeordnet zu werden. Aus diesem Grund verwenden wir spezifische Darstellungen für typische Zuordnungen und speichern sie in einer Variante.//std::set -> random set of elements
//Interval -> elements from a starting id up to a final id
//Single -> just a single element
using VariantSet = std::variant;

//This is the vector containing the mapping
std::vector< std::tuple > mapping;
< /code>
Wir haben angefangen, std :: Bereiche auf mehreren Teilen zu verwenden, und das allgemeine Ergebnis war großartig, aber ich bin mit der Variante festgefahren. Ich möchte einen Bereich von einer Funktion erhalten, damit ich die Elemente, die einer bestimmten ID zugeordnet sindfor (auto elementId: getMappedElements(mapping, interestingId){
do_something_with_the_element(elementId);
}
< /code>
Das Problem, das ich gefunden habe, ist, dass ich std :: Besuch verwenden muss, um den Bereich aus dem in der Variante gespeicherten zugrunde liegenden Objekt abzurufen. Dieser Bereich ist jedoch ein anderer Typ, je nachdem, welcher realer Container iteriert wird. Zum Beispiel erwiderte der einzigartige Behälter die Ansichten :: Single, während das Intervall IOTA zurückbrachte. Natürlich verteilt dies den Compiler, da die Besucher den gleichen Typ für jeden möglichen Typ in der Variante zurückgeben müssen, und natürlich können die Wickelfunktion auch mehrere Typen zurückgeben. Gibt es eine Möglichkeit, diesen "polymorphen" Bereich zu erreichen, damit ich tatsächlich einen Bereich zurückgeben kann, der später weiter komponiert werden kann (sehr wahrscheinlich eine Transformation)
Jede Hilfe wird geschätzt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post