Понекад морамо да манипулишемо рад функције према потреби. Промјена неких аргумената до заданог итд. Предодредити функцију Подразумевани аргументи Ограничава свестраност функције и присиљава нас да користимо подразумеване аргументе и то је и са сличним вредностима сваки пут. Од Ц ++ 11 надаље, увођење Функције Бинд је олакшао овај задатак.
Како се везати () рад?
Бонд функција уз помоћ плажа помаже да се манипулише положајем и бројем вредности које ће функција користити и модификовати функцију према жељеној производњи.
Колико је 10 мл
Шта су власници места?
Водећи су простори за именовање који усмеравају положај вредности у функцији. Представљени су _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. Положај места плаћа одређује положај вредности у извештају о позиву функција
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
У горњем коду јасно не. од места воде изједначених са бројем аргумената потребних за позивање функције. Везивање функције је усмерено по броју и положају локала.