set.begin ()의 오프셋을 기반으로 std :: set을 반복하는 방법은 무엇입니까?
Aug 20 2020
오프셋을 기반으로 반복기를 가져와야합니다.
즉, 시작을위한 반복자가 있습니다.
auto it = set.begin()
오프셋이있는 반복기에 도달해야합니다 ofst
.
it + ofst
그렇게하는 방법이 있습니까? it++
반복기 ofst
시간을 점진적으로 늘려야 합니다 .
답변
5 JeJo Aug 20 2020 at 08:21
나는 오프셋이있는 반복자에 가야한다
ofst
:it + ofst
: 그렇게하는 방법이 있는가?
아니요, operator+
이에 대해 정의 된 오버로드 가 없습니다 std::set::iterator
(일명 양방향 반복기 ). 그러나 다음과 같이 헤더 std::next에서를 사용
#include <iterator> // std::next
auto nthIter = std::next(it, ofst);
이것은 기본적으로 장면 뒤에서 ofst
도 시간을 증가시킵니다 .
는 std::set
이 양방향 반복자를 같은 더 고급 스러움이없는, 임의 접근 반복자를 , 따라서이 같은 증가해야합니다.
존재가 말했다, 당신은 과부하 수있다 operator+
(그리고 어쩌면 operator-
양방향 반복자에 대한)을 하지만 권장되지 않습니다 .