logo

Зв'язувати функцію та заповнювачі в C ++

Іноді нам потрібно маніпулювати функцією функції відповідно до потреби, тобто зміна деяких аргументів на за замовчуванням тощо, попередньо визначення функції Аргументи за замовчуванням обмежує універсальність функції і змушує нас використовувати аргументи за замовчуванням, і це теж із подібними значеннями щоразу. З C ++ 11 введення функції BIND полегшило це завдання. 

Як працює Bind ()?  



Функція прив’язки за допомогою заповнювачів допомагає маніпулювати положенням та кількістю значень, які будуть використовуватися функцією, і змінює функцію відповідно до потрібного виходу. 

.04 як дріб

Що таке заповнювачі?  

Власники - це простори імен, які спрямовують позицію значення у функції. Вони представлені _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

У наведеному вище code bind () модифікував виклик функції, щоб взяти 1 аргумент і повернув потрібний вихід. 



Властивості заповнювачів

1. Позиція заповнювача визначає позицію значення у операторі виклику функції 

кортеж java
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. Кількість заповнювачів визначає кількість аргументів, необхідних для передачі функції.

Ми можемо використовувати будь -який ні. заповнювачів у звіті про виклик функції (очевидно, менше максимальної кількості аргументів). Значення відпочинку замінюються визначеними користувачем значеннями за замовчуванням. 

підрядок javascript trim
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

У наведеному вище коді немає ні. заповнювачі прирівнювали до кількості аргументів, необхідних для виклику функції. Зв'язування функції спрямована за кількістю та положенням заповнювачів.