std::reverse(c.begin(), c.end())
은 기본 컨테이너 c
이 양방향 반복기을 제공해야하는 이유는 무엇입니까?왜 std :: reverse에는 양방향 반복기가 필요합니까?
사실상 이것은 (multi-) map
, (multi-) set
을 의미하지만, 주문되어 있기 때문에 역전 될 수 없습니다. 유일한 다른 양방향 디렉토리 컨테이너는 list
이지만 그 자신의 멤버 함수는 .reverse()
입니다.
이 하나 array
, vector
및 랜덤 액세스있다 deque
std::reverse
에 적용 할 수 있다는 것을 의미한다.
그래서 "정직"하고 말하십시오 : 임의 액세스가 필요합니까? 아니면 멤버 함수를 사용해야합니까?
사용자 정의 반복자에 대해 불필요한 제한이 있으므로 – krzaq
@krzaq로 생각했습니다. 그러나 출하 된 잠재적 목표의 80 %에 특정 기능을 적용 할 수 없다는 것이 이상하다고 생각했습니다. 나는 아마도 "주문한"또는 무엇인가라고 말하는 이터레이터 - 카테고리를 직교 또는 직각으로 발명했을 것이다. Esp. non-applicability가 ref-pages에'std :: reverse'를위한 doc에 언급되어 있지 않기 때문입니다. 어쩌면 사양 자체에 있을까요? – towi
'map' 또는'set'을'merge'-target (출력 반복자 필요)로 사용할 수 있습니까? 'map'과'set'에서'remove'를 사용하는 것은 어떻습니까? 아마도 순서가 바뀌기 때문에 아마 그렇지 않을 것입니다. – towi