때때로 우리는 필요에 따라 함수의 작동을 조작해야 합니다. 즉, 일부 인수를 기본값으로 변경하는 등의 작업이 필요합니다. 기본 인수 함수의 다양성을 제한하고 매번 유사한 값으로 기본 인수를 사용하도록 강요합니다. C++11부터 바인드 기능이 도입되면서 이 작업이 더 쉬워졌습니다.
바인딩()은 어떻게 작동하나요?
자리 표시자의 도움으로 바인딩 기능은 함수에서 사용할 값의 위치와 수를 조작하는 데 도움이 되며 원하는 출력에 따라 함수를 수정합니다.
자바 서버 페이지
자리 표시자란 무엇입니까?
자리 표시자는 함수에서 값의 위치를 지시하는 네임스페이스입니다. 그들은 다음과 같이 표현됩니다. _1 _2 _3 ...
예:
CPP// C++ code to demonstrate bind() and // placeholders #include #include // for bind() using namespace std; // for placeholders using namespace std::placeholders; // Driver function to demonstrate bind() void func(int a int b int c) { cout << (a - b - c) << endl; } int main() { // for placeholders using namespace std::placeholders; // Use of bind() to bind the function // _1 is for first parameter and assigned // to 'a' in above declaration. // 2 is assigned to b // 3 is assigned to c auto fn1 = bind(func _1 2 3); // 2 is assigned to a. // _1 is for first parameter and assigned // to 'b' in above declaration. // 3 is assigned to c. auto fn2 = bind(func 2 _1 3); // calling of modified functions fn1(10); fn2(10); return 0; }
산출:
5 -11
위의 코드에서 바인딩()은 1개의 인수를 사용하도록 함수 호출을 수정하고 원하는 출력을 반환했습니다.
자리 표시자의 속성
1. 자리 표시자의 위치에 따라 함수 호출 문의 값 위치가 결정됩니다.
CPP// C++ code to demonstrate placeholder // property 1 #include #include // for bind() using namespace std; // for placeholders using namespace std::placeholders; // Driver function to demonstrate bind() void func(int a int b int c) { cout << (a - b - c) << endl; } int main () { // for placeholders using namespace std::placeholders; // Second parameter to fn1() is assigned // to 'a' in fun(). // 2 is assigned to 'b' in fun // First parameter to fn1() is assigned // to 'c' in fun(). auto fn1 = bind(func _2 2 _1); // calling of function cout << 'The value of function is : '; fn1(1 13); // First parameter to fn2() is assigned // to 'a' in fun(). // 2 is assigned to 'b' in fun // Second parameter to fn2() is assigned // to 'c' in fun(). auto fn2 = bind(func _1 2 _2); // calling of same function cout << 'The value of function after changing' ' placeholder position is : '; fn2(1 13); return 0; }
산출:
리눅스 파일 시스템이 뭐야?
The value of function is : 10 The value of function after changing placeholder position is : -14
위 코드에서는 함수 호출에서 1과 13의 위치가 동일하더라도 자리 표시자의 위치가 변경되어 함수 호출 방식이 변경되었습니다.
2. 자리 표시자 수에 따라 함수를 전달하는 데 필요한 인수 수가 결정됩니다.
아무 번호나 사용할 수 있습니다. 함수 호출 문의 자리 표시자 수(분명히 최대 인수 수보다 적음). 나머지 값은 사용자가 정의한 기본값으로 대체됩니다.
CPP// C++ code to demonstrate placeholder // property 2 #include // for bind() #include using namespace std; // for placeholders using namespace std::placeholders; // Driver function to demonstrate bind() void func(int a int b int c) { cout << (a - b - c) << endl; } int main() { // for placeholders using namespace std::placeholders; // 1 placeholder auto fn1 = bind(func _1 2 4); // calling of function with 1 argument cout << 'The value of function with 1 ' 'placeholder is : '; fn1(10); // 2 placeholders auto fn2 = bind(func _1 2 _2); // calling of function with 2 arguments cout << 'The value of function with 2' ' placeholders is : '; fn2(13 1); // 3 placeholders auto fn3 = bind(func _1 _3 _2); // calling of function with 3 arguments cout << 'The value of function with 3 ' 'placeholders is : '; fn3(13 1 4); return 0; }
산출:
The value of function with 1 placeholder is : 4 The value of function with 2 placeholders is : 10 The value of function with 3 placeholders is : 8
위 코드에서 분명히 no. 함수를 호출하는 데 필요한 인수 수와 동일한 자리 표시자 수입니다. 기능 바인딩은 자리 표시자의 수와 위치에 따라 결정됩니다.
구별되게 세다