logo

Viazajte funkciu a zástupné symboly v C ++

Niekedy potrebujeme manipulovať s prevádzkou funkcie podľa potreby, t. predvolené argumenty Obmedzuje univerzálnosť funkcie a núti nás používať predvolené argumenty a to aj s podobnými hodnotami zakaždým. Od C ++ 11 sa zavedenie funkcie väzby uľahčilo túto úlohu. 

Ako funguje Bind ()?  



Funkcia väzby pomocou zástupných symbolov pomáha manipulovať s polohou a počtom hodnôt, ktoré sa majú použiť funkciou, a modifikuje funkciu podľa požadovaného výstupu. 

cesta nastavená v jazyku Java

Čo sú zástupné symboly?  

Zákonné symboly sú menné priestory, ktoré nasmerujú polohu hodnoty vo funkcii. Sú zastúpené _1 _2 _3 ... 



Príklad:

string.format java
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; } 

Výstup:

5 -11

Vo vyššie uvedenom kóde zväzok () upravil volanie funkcie tak, aby vzal 1 argument a vrátil požadovaný výstup. 



Vlastnosti zástupných symborov

1. Poloha zástupného symbolu určuje hodnotovú pozíciu vo výpise volania funkcie 

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; } 

Výstup:

The value of function is : 10 The value of function after changing placeholder position is : -14

Vo vyššie uvedenom kóde, aj keď poloha 1 a 13 bola vo funkcii rovnaká, volala zmena v pozícii zástupných symbolov zmenky spôsobu, akým sa funkcia nazývala.   

2. Počet zástupných symbolov určuje počet argumentov potrebných na odovzdanie funkcie.

reťazec concat java

Môžeme použiť ľubovoľné nie. zástupných symbolov vo vyhlásení o volaní (samozrejme menej ako maximálny počet argumentov). Zvyškové hodnoty sa nahradia predvolenými hodnotami definovanými používateľom. 

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; } 

Výstup:

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

Vo vyššie uvedenom kóde jasne č. Zásadných symbolov sa rovnalo počtu argumentov potrebných na volanie funkcie. Väzba funkcie je riadená počtom a pozíciou zástupných symbolov.