cppreference 설명서 https://en.cppreference.com/w/cpp/algorithm/for_each 말합니다 :
와이즈 비즈 나는 이것이 바로에서 즉시 사용할 수 없다는 것을 의미한다고 해석합니다. 함수를 전달하고 excetion 또는 이와 관련된 정보를 잡을 것으로 예상합니다.
- If execution of a function invoked as part of the algorithm throws an exception and ExecutionPolicy is one of thethree standard policies,std::terminate is called. For any other ExecutionPolicy, the behavior is implementation-defined.
예외를 사용할 것으로 예상 한 이유는
for_each
에서 변경 한 내용을 부분적으로 취소 (복귀) 할 수 있기 때문입니다.
요구.
더 나은 알고리즘이있을 수 있습니다.
for_each
의 역사적 버전을 발견했습니다.
다른 흥미로운 행동을하는 것으로 문서화되어 있습니다 :
http : //man.hubwiz.com/docset/C.docset/Contents/Resources/Documents/output/en/cpp/algorithm/for_each.html
와이즈 비즈
for_each
대신에
실제로 예외를 사용할 가능성이 있습니다.
왜
너무 논란이 많고 너무 복잡하고 (메모리) 비용이 많이 들었습니까?
논리에 동의하더라도 병렬
terminate
때문에 다른 옵션이 없습니다.
std::exception_list
를 반환
(UnaryFunction back 대신에, 이것은 또한 놀랍습니다).
따라서,
이
for_each
프로토콜이 완료되지 않은
void
를 실행 취소하는 데 필요한 구성 요소로 보입니다.
지시.
예를 들어 새로운 사용자 지정 정책을 기대하는 것이 합리적입니다. 와이즈 비즈
std::exception_list
를 허용하는 어딘가에 나타납니다
노래.
자세한 내용:이 실패한 루프 실행 취소 패턴은 컨테이너 구성에 사용됩니다. 사용자 정의 (병렬/순서)
for_each
를 구현하고 싶습니다.
(시퀀스되지 않은) 구성이 실패 할 때 초기화 된 개체를 "실행 취소"(파괴)합니다.
EDIT1: 잠시 후 람다에서 캡처 된 변수를 함수 매개 변수에 전달할 수 있습니다. 이 변수는 예외가 발생할 때 예외를 예외 _ 목록으로 저장할 수있는 공유 동시 데이터 일 수 있습니다. 이 작업이 이미 완료되었는지 궁금합니다.
<시간>EDIT2:
par_with_failed_list
구현을 찾았습니다.
HPX에서
https://github.com/STEllAR-GROUP/hpx/ blob/master/hpx/exception_list.hpp
https://github.com/STEllAR-GROUP/hpx/ blob/master/src/exception_list.cpp
undo
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- vue.js - axios를 사용하여 서버에 이미지를 업로드하는 방법
- python - 문자열에서 특정 문자 제거
std::exception_list
이에 상응하는 이득없이 병렬 알고리즘의 사양 및 구현에 많은 복잡성을 추가했습니다.사용자는 functor에서이 사례를 처리 할 수 있습니다.
와이즈 비즈 list에는 예외가 발생한 요소와 발생한 예외에 대한 포인터 목록이 포함됩니다.
exceptions