Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengelakkan Pemisah Luaran dalam Gelung Lelaran: Penyelesaian A C 11?

Bagaimana untuk Mengelakkan Pemisah Luaran dalam Gelung Lelaran: Penyelesaian A C 11?

DDD
DDDasal
2024-10-30 21:13:02608semak imbas

How to Avoid Extraneous Separators in Iteration Loops: A C  11 Solution?

Mengelakkan Pemisah Luaran dalam Gelung Lelaran

Lelaran pada jujukan elemen selalunya melibatkan pencetakan atau melakukan beberapa tindakan yang memerlukan pemisah antara elemen yang berturutan. Walau bagaimanapun, menambah pemisah selepas elemen terakhir boleh menjadi tidak diingini.

Pendekatan Tradisional untuk Lelaran Tidak Memusnahkan

Apabila melelaran pada tatasusunan dengan gaya C untuk gelung, atau menggunakan lelaran tidak merosakkan untuk urutan saiz yang tidak diketahui, selongsong khas elemen terakhir boleh menghalang pemisah tambahan:

<code class="cpp">for (const auto& item : items) {
    cout << item;
    if (std::next(it) != items.cend()) {  // Not the last element
        cout << separator;
    }
}</code>

Penyelesaian Lebih Elegan Menggunakan C 11 Constructs

Daripada selongsong khas yang jelas, C 11 memperkenalkan cara yang lebih bersih untuk mencapai perkara ini:

<code class="cpp">const auto separator = "WhatYouWantHere";
const auto* sep = "";
for (const auto& item : items) {
    std::cout << sep << item;
    sep = separator;  // Only assign when not on the last element
}</code>

Dalam pendekatan ini, pembolehubah penunjuk sep menjejaki sama ada pemisah telah dicetak lagi. Apabila menemui elemen pertama, sep kosong, jadi tiada apa yang dicetak. Semasa gelung diteruskan, sep diberikan nilai pemisah. Untuk semua elemen seterusnya, pemisah dicetak sebelum elemen.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Pemisah Luaran dalam Gelung Lelaran: Penyelesaian A C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn