オブジェクト指向プログラミングでは、不要な末尾区切り文字を導入せずにコレクションの連続要素間の演算を実行するのが一般的なタスクです。 。この問題は、コレクションを反復処理し、要素間の区切り文字を条件付きで出力することで解決されます。
C 11 の範囲ベースの for ループを使用すると、冗長ではありますが効果的な解決策は、2 番目の反復子を 1 つ進めて要素を反復処理することです。 :
<code class="cpp">for (auto it = items.cbegin(); it != items.cend(); it++) { cout << *it; if (std::next(it) != items.cend()) { cout << separator; } }</code>
ただし、このアプローチでは 2 番目のイテレータのオーバーヘッドが追加され、メイン ロジックがわかりにくくなります。
この美的問題を克服するには、より簡単なアプローチは、文字列変数を条件付きで更新することです。セパレータを保持します:
<code class="cpp">const auto separator = "WhatYouWantHere"; const auto* sep = ""; for (const auto& item : items) { std::cout << sep << item; sep = separator; }</code>
sep 変数を空の文字列に初期化し、ループ内で更新することにより、最後の要素を除くすべての要素の間にセパレータが確実に出力されます。これにより、問題に対する簡潔かつ効率的な解決策が得られます。
以上がC で無関係な区切り文字を使用せずに連続する要素を反復処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。