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-양방향 반복자에 대한)을 하지만 권장되지 않습니다 .