basit bir örneğidir. f2(x,y) = f3(x,5,y)
olarak tanımlanan 2 bağımsız değişkenin bir fonksiyonuna sahip olmak istiyoruz. C++ biz std::bind
ile bunu kolayca yapabilirsiniz:std :: bind nasıl kullanılabilir? f3 (x, y, z):</p> <p>bir 3 bağımsız değişken fonksiyonuna sahip olduğunu varsayalım: aşağıdaki gibi kullanılabilir nasıl <code>std::bind</code> açıklar
auto f2 = std::bind(f3, _1, 5, _2);
Bu örnek bana açık: std::bind
ilk argüman olarak bir işlev alır ve n fonksiyonunun argümanları sayısıdır o zaman alır n diğer argümanlar Bu std::bind
için ilk argüman olarak alınır.
void foo(int &x)
{
++x;
}
int main()
{
int i = 0;
// Binds a copy of i
std::bind(foo, i)(); // <------ This is the line that I do not understand.
std::cout << i << std::endl;
}
O foo
bir argüman olduğu açıktır ve std::bind
ile bu i
olarak ayarlandı:
Ancak, bağlama başka bir kullanım bulmuştur. Ama neden (foo, i)
'dan sonra başka bir çift parantez kullanıyoruz? Ve neden std::bind
'un çıkışını kullanmıyoruz? Demek istediğim, neden auto f = std::bind(foo, i)
'umuz yok?
auto bar = std::bind(foo, i);
bar();
, daha sonra hemen (parantez ikinci çifti kullanılarak) çağırır:
Ne yeryüzünde 'olduğunu \\\'? –
Bir açıklama olması gerekiyordu: // – Roman