Boost.Range를 사용하는 C 11의 역방향 범위 기반 For 루프
C에서 범위 기반 for 루프는 컨테이너 반복을 위한 강력한 도구입니다. 그러나 기본적으로 컨테이너의 시작부터 끝까지 반복됩니다. 이 방향을 반대로 하는 방법이 있나요?
범위 기반 For 루프를 사용한 역방향 반복기
컨테이너를 역방향으로 반복하는 한 가지 방법은 rbegin() 및 rend() 멤버 함수. 그러나 이를 위해서는 명시적인 반복자를 사용해야 하며 복잡한 시나리오에서는 다루기 어려울 수 있습니다.
for (auto i = c.rbegin(); i != c.rend(); ++i) { ... }
Boost.Range의 역방향 어댑터
다행히도 Boost.Range는 Boost::adaptors::reverse 어댑터를 사용한 우아한 솔루션입니다. 이 어댑터는 컨테이너를 래핑하고 반복자의 방향을 바꿉니다. 이를 통해 범위 기반 for 루프와 원활하게 통합할 수 있습니다.
for (auto& i : boost::adaptors::reverse(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}; for (auto i : boost::adaptors::reverse(x)) { std::cout << i << '\n'; } for (auto i : x) { std::cout << i << '\n'; } return 0; }
출력:
19 17 13 11 7 5 3 2 2 3 5 7 11 13 17 19
위 내용은 Boost.Range를 사용하여 C에서 범위 기반 For 루프를 어떻게 되돌릴 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!