ist elegant, aber es ist an Ort und Stelle; und std::partition_copy
ist auch nett, aber es braucht zwei Ausgabe-Iteratoren, d. h. Sie müssen mindestens die Anzahl der Elemente, die das Prädikat erfüllen, im Voraus zählen, wenn Sie das gleiche Ausgabe-Array verwenden wollen. Warum gibt es keinen std::partition
oder einen Einzelausgabe-Iterator std::partition_copy
in <algorithm>
?Warum hat std :: partition keine Out-of-Place-Variante?
Antwort
Vermutlich, weil die Funktionalität bereits durch entweder erreicht werden:
- Kopieren des Originalbehälter und mit in-place
partition
. - Dimensionierung des einzelnen Zielcontainers auf die richtige Größe und Verwendung der
begin()
undrbegin()
Iteratoren, um es von vorne und hinten mitpartition_copy
zu füllen.
Ihr zweiter Vorschlag ist eine schlaue Idee, die mir wahrscheinlich nicht eingefallen wäre. –
Beide Vorschläge erfordern viel mehr Zeit als der kombinierte Vorgang; Zumindest müssen Sie die gesamte Eingabe noch einmal wiederholen. Wäre das kein Problem, das eine andere Variante verdient? Außerdem gibt es bereits eine gewisse Redundanz in "
@ein Warum hat 'rbegin' Lösung dieses Problem? Ich kann mir keine vernünftige Out-of-Place-Partition vorstellen, die im Grunde nicht den eigentlichen Trick macht (benutze Output-Iteratoren, die die Elemente konstruieren). Sie brauchen * zwei separate Orte, um in eine nicht vorhandene Partition zu schreiben. – Yakk
- 1. Warum hat nicht std :: pair Iteratoren?
- 2. Warum hat die Spark RDD-Partition 2 GB für HDFS?
- 3. Warum hat std :: cin.getline keine oveloaded-Methode, um std :: string zu übernehmen?
- 4. Warum hat std :: map keinen Const Accessor?
- 5. Warum hat std :: weak_ptr nicht operator->?
- 6. Warum hat std :: vector zwei Zuweisungsoperatoren?
- 7. Partitionieren eines Vektors mit std :: partition
- 8. Warum hat ActionScript keine "Generika"?
- 9. Warum hat Map keine Kartenmethode?
- 10. Warum hat Rust keine Gewerkschaften?
- 11. Palindrome Partition Rubin keine Ausgabe
- 12. Warum keine Timeout-Unterstützung in std :: lock?
- 13. Warum hat Add-Funktion keine Auswirkungen in C++ 11 Thread?
- 14. Warum hat std :: function keinen function_type oder einen äquivalenten Membertyp?
- 15. Warum MySQL-Partitionierung keine Wirkung in meinem Fall hat
- 16. Warum in der Mitte des std String null Einstellung hat keine Wirkung
- 17. Warum gibt es in C++ 14 keine Funktion std :: allocate_unique?
- 18. Warum Mahout noch keine lineare Regression hat
- 19. Warum hat StringBuilder keine IndexOf-Methode?
- 20. Warum hat Python keine writeln() Methode?
- 21. Warum hat LinkedList keine initialCapacity in Java?
- 22. Warum hat der aktuelle Benutzer keine Daten?
- 23. Warum hat dieser Befehl grep keine Ausgabe?
- 24. Warum hat ObservableCollection keine RemoveAll-Methode?
- 25. Warum UITextview keine Platzhaltereigenschaft wie UITextField hat
- 26. Warum hat Python keine statischen Variablen?
- 27. Warum hat SerializationInfo keine TryGetValue-Methoden?
- 28. Warum hat XElement keine GetAttributeValue-Methode?
- 29. Warum hat C# keine lexikalisch verschachtelten Funktionen?
- 30. Warum hat das .NET-Framework keine Prioritätswarteschlangenklasse?
Welchen Vorteil hätte dies gegenüber der Erstellung Ihrer eigenen Kopie und 'std :: partition'? – user2357112
@ user2357112: Leistung? ... obwohl, ich denke, man könnte sagen, wenn ich mich um die Leistung kümmern soll, sollte ich '' Code nicht mit beginnen. –
einpoklum