Gibt es einen einfacheren Weg?

8

Ich würde gerne wissen, ob es einen kürzeren / einfacheren Weg gibt:

  1. Teilen Sie die eingehende Zeichenfolge nach Wörtern
  2. Schreiben Sie die Token in umgekehrter Reihenfolge nach stdout

Es gibt zwei Einschränkungen: keine Bibliotheken und keine Schleifen

%Vor%     
cimnine 09.08.2011, 12:43
quelle

3 Antworten

7

Leichte Abkürzung, wir können eine Kopie dank dem Iterator Konstruktor von deque :

loswerden %Vor%

Beachten Sie die zusätzlichen Parens um istream_iterator<string>() , um ein höchst ärgerliches Parsen zu vermeiden.

    
Steve Jessop 09.08.2011, 12:56
quelle
5

Das ist nicht der Fall, weil Sie die Wörter speichern müssen, bis die letzte geholt ist. Es ist komplexer, zu versuchen, rückwärts zu tokenisieren.

Sie können auch std::copy_backward nicht verwenden, weil std::istream_iterator nicht bidirektional ist (nur Eingabe).

std::deque ist perfekt für diese Aufgabe. Sie hätten auch vector + back_inserter verwenden und von v.rbegin() nach v.rend() in ostream_iterator kopieren können.

Auch die Logik zum Token der Zeichenkette wird am einfachsten mit istringstream ausgedrückt.

Grundsätzlich sieht das so aus, als könnte man nicht viel besser machen.

Das einzige kleine religiöse Ding ist, dass ich using namespace nicht aushalten kann, auch nicht im Blockbereich.

Mein Vorschlag mit der gleichen Zeilenanzahl:

%Vor%

Wichtige Änderung: Sie benötigen das zusätzliche Klammerpaar um in_iterator() , um zu vermeiden, dass die gesamte Anweisung als Funktionsdeklaration analysiert wird. @Steve Jessops Antwort hat das gleiche Problem. Siehe dieses fehlerhafte Beispiel , um die Haarwuchs-Fehlermeldung zu sehen, die aus einer solchen Verwirrung resultiert.

    
Alexandre C. 09.08.2011 12:54
quelle
2

Es ist gut, dass Ihr Lehrer die Verwendung der richtigen C ++ - Funktionalität fördert, aber zum Spaß würde ich behaupten, dass die Verwendung von copy einfach die Schleife weiter nach unten bewegt ... Ich würde behaupten, dass Rekursion der wahre Weg ist tun Sie dies, ohne eine explizite Schleife zu verwenden, etwas wie unten ...

%Vor%     
Nim 09.08.2011 13:25
quelle

Tags und Links