MPR | find_if 예제
155712
single,single-post,postid-155712,single-format-standard,ajax_fade,page_not_loaded,,select-theme-ver-3.2.1,popup-menu-slide-from-left,wpb-js-composer js-comp-ver-4.12,vc_responsive
 

find_if 예제

find_if 예제

이제 std:find_if 알고리즘, constexpr InputIt find_if(InputIt 먼저 입력, InputIt 마지막, C++ 함수 std::::find_if())와 이 비교기는 조건을 만족하는 요소의 첫 번째 발생을 찾습니다. 조건 지정을 위해 unary 술어를 사용합니다. C++11이 없는 경우 std::find_if_not과 동등한 것은 std::find_if를 부정된 술어와 함께 사용하는 것입니다. 다음 예제에서는 std:::algorithm::find_if() 함수의 사용을 보여 주며 있습니다. 이 문서에서는 std::find 및 std:find_if 사용자 정의 데이터 형식즉 클래스 및 구조와 알고리즘을 사용 하는 방법을 볼 수 있습니다. 다음 예제에서는 정수 벡터에서 정수를 찾습니다. 이 일반 비교기 functor를 정의하지 않으려면 std::find_if를 사용하여 항목 개체를 쉽게 찾을 수 있는 방법은 무엇입니까? std::find 및 std::find_if 알고리즘은 지정된 범위에서 첫 번째 요소를 찾는 데 사용됩니다. std::find_if이 일반 비교기 functor를 사용 하 여 std::find 비교에 대 한 == 연산자를 사용 하 여 따라서 우리는 opeartor == 항목 클래스에 정의 했습니다. 식 p(v)는 VT가 Value 범주에 관계없이 InputIt의 값 형식인 모든 형식(const) VT의 모든 인수 v에 대해 bool로 변환할 수 있어야 하며 v를 수정해서는 안 됩니다. 따라서 VT&의 매개 변수 형식은 허용되지 않으며 VT의 경우 이동이 복사본과 동일하지 않는 한 VT도 허용되지 않습니다(C++11 이후). 그러나 개수를 기준으로 항목 개체를 검색해야 하는 경우 어떻게 해야 합니까? 그런 다음 위의 접근 방식을 기반으로 다른 비교 함수를 만들어야합니다.

그래서, 우리는 그것을 개선하기 위해 무엇을 할 수 있습니까? . 연산자 == 즉 ID에 따라 두 항목 개체의 비교 논리를 하드 코딩했습니다. 따라서 특정 가격으로 Item 개체를 검색해야하는 경우 == 연산을 사용할 수 없습니다. 그것을 하는 방법? . 우리가 컴파일하고 위의 프로그램을 실행하자,이 다음과 같은 결과를 생성합니다 – . 유효하지 않은 매개 변수는 정의되지 않은 동작을 일으킵니다. 내부적으로 std::find 알고리즘은 비교를 위해 == 연산을 사용합니다. int, std::string etc 연산자 ==와 같은 기본 제공 데이터 형식의 경우 기본적으로 사용할 수 있지만 사용자 정의 데이터 형식즉 클래스 및 구조체의 경우 == 연산자를 정의해야 합니다. 우리는 std::find 알고리즘을 사용하여 그것을 할 것입니다. 먼저 항목 클래스를 볼 수 있습니다, 우리가 클래스 항목 개체의 목록이 있다고 가정합니다.

각 항목 개체에는 ID, 가격 및 가용성 수와 같은 속성이 있습니다. 이제 이 벡터에서 특정 ID가 있는 항목 개체를 검색하려고 합니다. pred – 하나의 인수를 수락하고 bool을 반환 하는 unary 술어. pred(Unary Function)가 true를 반환하는 범위 [첫 번째, 마지막] 범위의 첫 번째 요소로 이터레이터를 반환합니다. 이러한 요소를 찾을 수 없는 경우 함수가 마지막으로 반환됩니다. 함수 템플릿 : 첫 번째 => 마지막 범위의 시작을 가리키는 이터레이터 => 범위의 끝을 가리키는 이터레이터 => 조건부 함수(true 또는 false 반환) 조건을 만족하는 첫 번째 요소로 의 거점을 가리키거나 이러한 요소가 발견되지 않으면 마지막이 됩니다. 조건자 함수 predtrue를 반환 하는 범위에서 첫 번째 요소를 찾습니다. 클래스의 모든 속성을 기반으로 검색을 위한 일반 비교기 functor를 만들 수 있습니다., 조건자 함수 pred true 반환 범위 내의 첫 번째 요소를 가리키는 이터레이터.

val을 찾지 못하면 마지막을 가리키는 이 리터레이터는 특정 기준을 충족시키는 범위 [첫 번째, 마지막)의 첫 번째 요소를 반환합니다.

No Comments

Sorry, the comment form is closed at this time.