>  기사  >  백엔드 개발  >  원하지 않는 구분 기호 없이 C에서 연속 요소 쌍을 반복하는 방법은 무엇입니까?

원하지 않는 구분 기호 없이 C에서 연속 요소 쌍을 반복하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-27 04:20:29192검색

How to Iterate Over Consecutive Element Pairs in C   without Unwanted Separators?

C 관용구를 사용하여 연속 요소 쌍 반복

일반적인 프로그래밍 작업 중 하나는 컬렉션을 반복하고 각 연속 요소 쌍 사이에서 작업을 수행하는 것입니다. 강요. 기본 범위 for 루프는 반복을 처리할 수 있지만 끝에 원치 않는 구분 기호가 발생하는 경우가 많습니다.

다행히도 이 문제를 해결하기 위한 몇 가지 관용적 접근 방식이 있습니다. 한 가지 방법은 추가 포인터를 사용하여 구분 기호 상태를 추적하는 것입니다.

<code class="cpp">const auto separator = "WhatYouWantHere";
const auto* sep = "";
for(const auto&amp; item : items) {
    std::cout << sep << item;
    sep = separator;
}

이 예에서 sep 포인터는 빈 문자열로 초기화됩니다. 루프가 진행됨에 따라 sep는 최종 요소가 아닌 요소가 발견될 때마다 구분 기호 문자열로 업데이트됩니다. 기본적으로 sep는 첫 번째 요소 앞에 빈 문자열이 되어 선행 구분 기호가 없습니다.

또는 일부 C 라이브러리는 구분 기호 논리를 처리하는 특수 반복기를 제공합니다. 예를 들어 Boost Range 라이브러리에는 연속적인 요소 쌍에 조건자를 적용하고 조건자에 실패한 항목을 필터링하는 데 사용할 수 있는 인접_필터링 함수가 포함되어 있습니다.

<code class="cpp">#include <boost/range/algorithm/adjacent_filtered.hpp>

for(auto& adjacent_pair : boost::adjacent_filtered(items, [](const auto& lhs, const auto& rhs) { return lhs != rhs; })) {
    std::cout << adjacent_pair.first << " separator " << adjacent_pair.second;
}</code>

이 접근 방식은 간결하고 우아한 솔루션을 제공합니다. 이지만 외부 라이브러리를 사용해야 합니다. 궁극적으로 어떤 관용구를 사용할지는 프로그래머의 특정 요구와 선호도에 따라 선택됩니다.

위 내용은 원하지 않는 구분 기호 없이 C에서 연속 요소 쌍을 반복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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