>백엔드 개발 >C++ >반복 루프에서 불필요한 구분자를 피하는 방법: C 11 솔루션?

반복 루프에서 불필요한 구분자를 피하는 방법: C 11 솔루션?

DDD
DDD원래의
2024-10-30 21:13:02602검색

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

반복 루프에서 불필요한 구분 기호 방지

일련의 요소를 반복하려면 연속된 요소 사이에 구분 기호가 필요한 일부 작업을 인쇄하거나 수행하는 작업이 포함되는 경우가 많습니다. 그러나 마지막 요소 뒤에 구분 기호를 추가하는 것은 바람직하지 않을 수 있습니다.

비파괴 반복자에 대한 전통적인 접근 방식

C 스타일 for 루프로 배열을 반복하거나 비파괴 반복자를 사용하는 경우 크기를 알 수 없는 시퀀스의 경우 특수 케이싱을 사용하면 마지막 요소가 추가 구분 기호를 방지할 수 있습니다.

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

C 11 구문을 사용하는 더 우아한 솔루션

C 11은 명시적인 특수 케이싱 대신 이를 달성하는 더 깔끔한 방법:

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

이 접근 방식에서 포인터 변수 sep는 구분 기호가 아직 인쇄되었는지 여부를 추적합니다. 첫 번째 요소를 만나면 sep는 비어 있으므로 아무것도 인쇄되지 않습니다. 루프가 진행됨에 따라 sep에 구분 기호 값이 할당됩니다. 모든 후속 요소에 대해 구분 기호는 해당 요소 앞에 인쇄됩니다.

위 내용은 반복 루프에서 불필요한 구분자를 피하는 방법: C 11 솔루션?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.