ホームページ > バックエンド開発 > C++ > C でカンマ区切りのリストを効率的に出力するにはどうすればよいですか?

C でカンマ区切りのリストを効率的に出力するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-30 00:01:10
オリジナル
139 人が閲覧しました

How to Efficiently Print Comma-Separated Lists in C  ?

C でカンマ区切りリストを出力する方法?

C では、要素のカンマ区切りリストの出力は比較が難しい場合がありますJava などの他の言語へ。これを解決するために、いくつかの手法を検討します。

中置反復子の使用

中置反復子を使用すると、反復中に各要素の間に区切り文字を挿入できます。これは、標準出力反復子のカスタマイズされたバリエーションです。

// 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;
    }
    // ...
};
ログイン後にコピー

中置反復子での使用:

#include "infix_iterator.h"

// ...

// Copy elements using infix iterator to insert commas
std::copy(keywords.begin(), keywords.end(), infix_iterator(out, ",")); 
ログイン後にコピー

以上がC でカンマ区切りのリストを効率的に出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート