Lets sagen, dass ich ein vector<int> { 1, 1, 2, 3, 3, 3, 1, 1 }
haben und ich möchte dies in einem ‚benachbarten Element zählt‘ vector<std::pair<int, int>> { {1, 2}, {2, 1}, {3, 3}, {1, 2} }
von konvertieren:Wie werden gleiche, benachbarte Elemente in einem Vektor gezählt?
ich wahrscheinlich über den Vektor mit einer Fahne, die den Beginn eines neuen ‚Nachbarschaftssatz iterieren würde 'und ein Zähler, der die Anzahl der aufeinanderfolgenden Elemente zählt. Ich habe mich gefragt, ob es nicht bereits eine abstraktere und elegantere Lösung in der STL gibt, da dies ein sehr verbreiteter Anwendungsfall ist. Algorithmen wie unique, boundary_find oder equal_range scheinen ziemlich nah an dem zu sein, wonach ich suche, aber nicht ganz das Richtige und wahrscheinlich auch keinen Gewinn, es von Grund auf selbst zu implementieren.
„Ich habe mich nur gefragt, ob es nicht schon eine abstraktere und elegante Lösung in der STL ist, da dies wie ein sehr häufiger Anwendungsfall scheint“ Für einen Vektor? Vielleicht für eine Karte, und immer noch "gemeinsam" ist eine Strecke. – AndyG
Es gibt keinen eingebauten Algorithmus in der C++ - Bibliothek, der so etwas macht. Es liegt an Ihnen, es zu implementieren. Und klingt, als hätte man den Algorithmus bereits gut im Griff, so dass es keinen Sinn macht, auf eine Antwort zu warten, die von jemandem auf den Intertubes nicht kommen wird. –
Was sind benachbarte Elemente in einem Vektor? Es gibt mindestens zwei Interpretationen. Was hindert Sie daran, einfach durch den Vektor zu interagieren? – Imago