>백엔드 개발 >C++ >C 11의 범위 기반 for 루프를 사용하여 컨테이너를 통해 반복을 어떻게 역방향으로 수행할 수 있습니까?

C 11의 범위 기반 for 루프를 사용하여 컨테이너를 통해 반복을 어떻게 역방향으로 수행할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-14 13:34:12360검색

How Can I Reverse Iterate Through a Container Using C  11's Range-Based for-Loops?

C 11을 사용한 범위 기반 for 루프의 역반복

C에서 범위 기반 for 루프는 편리한 방법을 제공합니다. 컨테이너의 요소를 반복합니다. 그러나 반복자의 방향을 바꿀 수 있는 컨테이너 어댑터가 내장되어 있지 않아 컨테이너를 역순으로 반복하기가 어렵습니다.

개념: 컨테이너 어댑터

솔루션을 탐색하기 전에 컨테이너 어댑터의 개념을 이해하는 것이 중요합니다. 이는 컨테이너를 래핑하고 해당 요소의 수정된 보기를 제공하는 개체입니다. 어댑터는 기본 컨테이너에서 반환된 요소를 필터링, 변환 또는 조작할 수 있습니다.

해결책: Boost의 역방향 어댑터

반복자의 방향을 바꾸고 역방향 반복을 활성화하려면 범위 기반 for 루프에서는 Boost C 라이브러리의 Boost::adaptors::reverse 어댑터를 활용할 수 있습니다. 이 어댑터는 컨테이너를 래핑하고 해당 요소의 역순을 반환합니다.

다음 예를 고려하세요.

#include <list>
#include <iostream>
#include <boost/range/adaptor/reversed.hpp>

int main() {
    std::list<int> x { 2, 3, 5, 7, 11, 13, 17, 19 };

    // Iterate in reverse order
    for (auto i : boost::adaptors::reverse(x))
        std::cout << i << '\n';

    // Iterate in forward order
    for (auto i : x)
        std::cout << i << '\n';
}

이 예에서는 , reversed 어댑터는 목록 x를 역순으로 반복하는 데 사용됩니다. 출력은 다음과 같습니다.

19
17
13
11
7
5
3
2

참고: Boost::adaptors::reverse 어댑터는 Boost C 라이브러리의 일부입니다. 다운로드하여 기존 C 프로젝트에 통합할 수 있습니다.

위 내용은 C 11의 범위 기반 for 루프를 사용하여 컨테이너를 통해 반복을 어떻게 역방향으로 수행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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