logo

Vezati funkcijo in zadrževalnike v C ++

Včasih moramo manipulirati z delovanjem funkcije glede na potrebo, tj. Spreminjanje nekaterih argumentov na privzeto itd. privzeti argumenti Omeji vsestranskost funkcije in nas prisili k uporabi privzetih argumentov in to tudi s podobnimi vrednostmi vsakič. Od C ++ 11 naprej je uvedba funkcije BIND olajšala to nalogo. 

Kako deluje Bind ()?  



Funkcija vezanja s pomočjo lastnikov mest pomaga manipulirati s položajem in številom vrednosti, ki jih mora funkcija uporabiti, in spreminja funkcijo v skladu z želenim izhodom. 

sredinska slika v css

Kaj so imetniki kraja?  

Nalozici so imeniški prostori, ki usmerjajo položaj vrednosti v funkciji. Zastopajo jih _1 _2 _3 ... 



Primer:

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

Izhod:

5 -11

V zgornji kodi je Bind () spremenil klic funkcije, da vzame 1 argument, in vrnil želeni izhod. 



jlist

Lastnosti rezervoarjev

1. Položaj rezerviranega mesta določi položaj vrednosti v izjavi o klicu funkcije 

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

Izhod:

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

V zgornji kodi, čeprav sta bila položaj 1 in 13 v funkciji, pokličeta spremembo položaja državnih mest, ki je spremenila način klicanja funkcije.   

primeri programov python

2. Število lastnikov mest določa število argumentov, potrebnih za opravljanje funkcije.

Lahko uporabimo katero koli št. od lastnikov mest v izjavi o funkciji (očitno manj kot največje število argumentov). Preostale vrednosti so nadomeščene z uporabniško definiranimi privzetimi vrednostmi. 

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

Izhod:

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

V zgornji kodi jasno št. od lastnikov mest, enakovrednih številu argumentov, potrebnih za klic funkcije. Vezava funkcije je usmerjena s številom in položajem lastnikov mest.