일부 레거시 코드를 통합 한 2- 패스 알고리즘을 작성하려고합니다. 특정 컨테이너를 두 번, 한 번 순서대로, 한 번 역순으로 이동하려고합니다. 분명히, 내 생각은 iterator
과 reverse_iterator
을 사용하는 것이지만 이상하게 컨테이너를 사용하는 디자이너는 컨테이너에 대해 reverse_iterator
을 정의하는 데 적합하지 않다고 생각했습니다. reverse_iterators
여기 iterators
처럼 역 참조 할 수 없습니다. 이미 알고리즘이 reverse_iterator
이 필요합니다.C++ reverse_iterator 대안
제 생각에는 알고리즘의 첫 번째 부분에 첫 번째 패스 반복자를 사용하고 알고리즘을 push_front
알고리즘을 새 컨테이너로 실행 한 다음 새 컨테이너를 반복합니다. 이것은 응용 프로그램에서 중요하지 않은 메모리를 차지할 것이지만 C++에서 reverse_iterators
에 대한 더 깨끗한 대안이 있습니까? 아니면 전달을 사용하여 알고리즘을 다시 작성해야합니까? iterators
?
감사합니다. iterator가 양방향 인 것처럼 보입니다. 클래스는 실제로'std :: reverse_iterator'를 사용하여'reverse_iterator'를 구현합니다. 그러나 그것을 사용하려고 할 때 역 참조를하면 컴파일러 오류가 발생합니다. – Zeke
@ Zeke : 사용중인 코드와 정확한 컴파일러 오류를 게시해야합니다. 그렇지 않으면 도움을주는 것이 어렵습니다. :( –
@James : Fair enough.'--it' 아이디어가 효과적이라고 생각하지만 for 루프 조건에 대한 제안이 있습니까? for (-it; it ! = end; --it)'하지만 마지막 항목이 누락 될 수 있습니다. 루프 본문이 끝난 후 조건을 수정하거나 루프 코드를 포함해야합니까? – Zeke