Nehmen wir an, wir haben ein Array mit n Elementen (n & gt; 0).
Wir möchten eine Liste dieser Elemente mit einem Trennzeichen zwischen ihnen ausgeben.
Ein gängiger Ansatz für dieses Problem ist:
%Vor%Aber es scheint ein bisschen unordentlich zu sein, das zu tun.
Ein anderer Ansatz wäre:
%Vor%Aber ich bin mir nicht sicher, ob es immer funktioniert.
Sehen Sie andere clevere Möglichkeiten, zum Beispiel in C, C ++?
Eine mögliche C ++ Lösung:
Zusammenfassung: Schreiben Sie ein infix_ostream_iterator
, was im Grunde dasselbe ist wie ostream_iterator
, außer dass der "separator" Parameter wirklich ein Trennzeichen ist, kein Suffix für jedes Element. Die Verwendung wäre dann:
Zum Besseren oder Schlechteren verwende ich gezählte Schleifen mit
%Vor%Ich bin mir sicher, das ist ein Downvote-Köder für altmodisch, aber es funktioniert.
Wenn jemand mir sagen will, dass es ineffizient ist, Junge, ich habe eine Flamme bereit; -)
Ich benutze immer die erste Item-Check-Idiom. Hier ist der Code in Java:
%Vor%In Common Lisp grenzt es an einfach, solange Sie das Trennzeichen fest codieren können.
%Vor% Beim Aufruf wird eine Zeichenfolge zurückgegeben, die aus den Elementen in list
, getrennt durch "," besteht (mit Ausnahme des letzten Elements, dem nichts folgt). Nun, wenn ein Ausgabestream gefüttert wird, druckt es es in den Stream, es passiert einfach, dass 'nil' bedeutet "Kein Stream, nur eine Zeichenkette zurückgeben".
Tags und Links algorithm language-agnostic optimization implementation