2014-09-22 2 views
0

연결 목록을 구현하고 있는데 목록이 비어 있으면 remove() 함수에서 무엇을 반환해야하는지 궁금합니다. 표준 링크드리스트 클래스를 살펴 보았고 목록이 비어있을 때 remove 메소드는 정의되지 않은 동작을 호출합니다. 그건 내가 원하는 일이 아니야. 표준 라이브러리에서 던져야하는 적절한 예외가 있습니까?누군가 존재하지 않는 요소를 제거하도록 요청하면 어떻게해야합니까?

+0

삭제하려는 개체가 더 이상 존재하지 않으므로 예외가 발생하는 이유는 무엇입니까? 그렇지 않으면 그냥 invalid_argument – Pieter21

+0

그냥 'bool'을 반환하는 것과 같은 유혹을 느낄 것입니다 :'bool remove (const Element & e);'. 개인적으로, 나는 특별히 예외적 인 ** 느낌이 들지 않습니다. container. – Galik

답변

2

std::out_of_range을 던질 수 있습니다. 또는 하위 클래스를 만들고 고유 한 예외 클래스를 throw 할 수도 있습니다. 표준 (n3797)에서

:

19.2.5.1 클래스 out_of_range하지 예상 된 범위의 인수 값을보고하는 예외로 던져 객체의 유형을 정의합니다.

+0

나중에 custom exception을 기억 하겠지만'std :: logic_error'는 받아 들일 만합니다. 감사합니다. –

+0

감사합니다. –

관련 문제