Was sind clevere Möglichkeiten, eine Liste von n Elementen mit (n-1) Trennzeichen dazwischen auszugeben?

7

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 ++?

    
Benoit 24.11.2010, 10:51
quelle

11 Antworten

16
%Vor%     
Ben Jackson 24.11.2010, 11:00
quelle
11
%Vor%

oder Variationen dazu. Ich kann nicht wirklich darüber nachdenken, wie man output_item(i) nicht noch einmal wiederholt.

    
lijie 24.11.2010 11:04
quelle
5

Manchmal:

%Vor%

ist kürzer.

    
Andreas Brinck 24.11.2010 10:57
quelle
5

Da es als sprachunabhängig gekennzeichnet ist, ist es wichtig, darauf hinzuweisen, dass einige Sprachen eingebaute Funktionen haben, die Sie daran hindern, über dieses Problem nachzudenken. Nehmen Sie diesen Python-Code zum Beispiel:

%Vor%     
Frank 24.11.2010 11:00
quelle
5

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:

%Vor%     
Steve Jessop 24.11.2010 11:44
quelle
5

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; -)

    
Mike Dunlavey 24.11.2010 15:40
quelle
3

Diese Version vermeidet zusätzliche Verzweigungen:

%Vor%

(Für diejenigen, die Angst vor goto haben, kann es mit dem Ansatz von Duffs Gerät geschrieben werden)

    
ruslik 24.11.2010 14:04
quelle
3

Das "erste Häkchen" in Haskell:

%Vor%

Es wird so verwendet:

%Vor%     
keiter 25.11.2010 13:56
quelle
2

Ich benutze immer die erste Item-Check-Idiom. Hier ist der Code in Java:

%Vor%     
Vladimir Ivanov 24.11.2010 10:57
quelle
1
%Vor%     
khachik 24.11.2010 10:56
quelle
1

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".

    
Vatine 24.11.2010 11:18
quelle