Heim >Backend-Entwicklung >C++ >Wie drucke ich effizient durch Kommas getrennte Listen in C?

Wie drucke ich effizient durch Kommas getrennte Listen in C?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-30 00:01:10158Durchsuche

How to Efficiently Print Comma-Separated Lists in C  ?

Wie drucke ich eine durch Kommas getrennte Liste in C?

In C kann das Drucken einer durch Kommas getrennten Liste von Elementen im Vergleich dazu schwierig sein zu anderen Sprachen wie Java. Um dieses Problem zu lösen, untersuchen wir verschiedene Techniken.

Verwendung eines Infix-Iterators

Mit einem Infix-Iterator können Sie während der Iteration ein Trennzeichen zwischen jedem Element einfügen. Es handelt sich um eine angepasste Variante des Standard-Ausgabe-Iterators.

// infix_iterator.h
// Extended output iterator with delimiter insertion

template <typename T, typename charT, typename traits = std::char_traits<charT>>
class infix_ostream_iterator : public std::iterator<std::output_iterator_tag, void, void, void, void>
{
    std::basic_ostream<charT, traits>& os;
    charT const* delimiter;
    bool first_elem;

public:
    infix_ostream_iterator(std::basic_ostream<charT, traits>& s) : os(&s), delimiter(0), first_elem(true) {}
    infix_ostream_iterator(std::basic_ostream<charT, traits>& s, charT const *d) : os(&s), delimiter(d), first_elem(true) {}

    infix_ostream_iterator<T, charT, traits>& operator=(T const &item)
    {
        // Insert delimiter before element unless it's the first
        if (!first_elem && delimiter != 0)
            *os << delimiter;
        *os << item;
        first_elem = false;
        return *this;
    }
    // ...
};

Verwendung mit Infix Iterator:

#include "infix_iterator.h"

// ...

// Copy elements using infix iterator to insert commas
std::copy(keywords.begin(), keywords.end(), infix_iterator(out, ",")); 

Das obige ist der detaillierte Inhalt vonWie drucke ich effizient durch Kommas getrennte Listen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn